2017-08-16 77 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;