2013-01-22 39 views
5

Tôi cần truy vấn ID tối đa từ hai bảng và tôi cần lấy ID của bất kỳ số nào lớn hơn. Tôi đang sử dụng sqlserver.sql để lấy số tối đa từ cả hai bảng?

Queries:

SELECT MAX(a.ID) 
FROM tableA a 

SELECT MAX(b.ID) 
FROM tableB b 

Nếu tableA 's ID tối đa là 20 và tableB' s ID tối đa là 30 thì UNION của cả hai truy vấn bảng nên trả lại chỉ 30.

Có thể kết hợp cả hai truy vấn vào một truy vấn để trả về ID tối đa?

+0

bạn đang mong đợi hai hàng, cả hai đều 30? Hoặc một hàng, 30? – Meff

+0

nope..i chỉ cần 30 – user1016403

Trả lời

6

Điều này dựa trên những gì bạn đã nói, UNION cả hai bảng và nhận giá trị tối đa.

SELECT max(ID) 
FROM 
(
    select max(ID) ID from tableA 
    UNION 
    select max(ID) ID from tableB 
) s 

hoặc

SELECT max(ID) 
FROM 
(
    select ID from tableA 
    UNION 
    select ID from tableB 
) s 
3
SELECT MAX(id) 
FROM (SELECT ID FROM tableA 
     UNION 
     SELECT ID FROM tableB) AS D 
0

tùy chọn mà không cần sắp xếp

SELECT MAX(CASE WHEN a.ID > b.ID THEN a.ID ELSE b.ID END) 
FROM tableA a CROSS JOIN tableB b 

Demo trên SQLFiddle

Các vấn đề liên quan