2013-01-22 11 views
5

Potrzebuję zapytać o maksymalny identyfikator z dwóch tabel i muszę wziąć identyfikator tego, który jest większy. używam sqlserver.sql, aby wziąć maksymalną liczbę z obu tabel?

zapytania:

SELECT MAX(a.ID) 
FROM tableA a 

SELECT MAX(b.ID) 
FROM tableB b 

Jeśli tableA „maksymalna ID y 20 i tableB” maksymalna ID a 30 następnie UNION zarówno zapytanie tabele należy jedynie powrócić 30.

jest możliwe połączyć oba zapytania w jedno zapytanie, aby zwrócić maksymalny identyfikator?

+0

Czekasz dwa wiersze, zarówno od 30? Lub jeden rząd z 30? – Meff

+0

nope..i potrzeba tylko 30 – user1016403

Odpowiedz

6

Jest to oparte na tym, co powiedziałeś, UNION obu tabelach i uzyskaj maksymalną wartość.

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

lub

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

opcja bez sortowania

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

Demo SQLFiddle

Powiązane problemy