2017-08-16 21 views
0

該查詢從我的第一個表中選擇的所有地方行ID犯規存在於我的第二個表:重組兩個SELECT

SELECT * 
FROM table1 
WHERE NOT EXISTS (SELECT idTable1 FROM table2 WHERE table1.id=idTable1 

該查詢選擇誰在table2存在與table2最後一個ID table1所有的行(原因table1一行可以有table2的多行,但只有最後沒有忘了):

SELECT * 
FROM table2 
    INNER JOIN table 1 ON idTable1 = table1.id 
WHERE table2.id IN (SELECT MAX(actioncur.id) FROM table2 GROUP BY idTable1) 

我想重新集結兩個查詢於一體,我想選擇的所有的行當id不存在於table2中並且選擇所有table1作爲最後的table2 id。例如,我想選擇:第1行 - > ID = 44; table2.id = 187; idTable1 = 44。第2行 - > id = 45; table2.id =? ; idTable1 =?

+4

顯示有關SQL UNION虛擬數據和預期輸出 – OzLa

+1

讀... https://www.w3schools.com/sql/sql_union.asp – Roy

+0

羅伊我不能使用UNION導致這兩個查詢沒有山姆號列 –

回答

0

如果我理解正確的話,你可以使用相關子查詢:

SELECT t1.*, 
     (SELECT MAX(t2.id) 
     FROM table2 t2 
     WHERE t1.id = t2.idTable1 
     ) as max_t2id 
FROM table1 t1; 

您還可以LEFT JOINGROUP BY做到這一點:

SELECT t1.*, MAX(t2.id) as max_t2id 
FROM table1 t1 JOIN 
    table2 t2 
    ON t1.id = t2.idTable1 
GROUP BY t1.id;