我有3个数字的table1和1个数字的table2:

table1       table2
n              n
1              1
2
3


我想从表1中选择表2中不存在的数据(数字2和3)。我试过了:

select table1.* from table1, table2 where table1.n <> table2.n


我还尝试了其他where子句:

where table1.n not like table2.n
where not table1.n = table2.n


但是我没有得到结果。我知道可以通过多个步骤完成此操作,但是我想知道是否有一个简单的查询即可执行。谢谢

最佳答案

您需要执行LEFT JOIN并查找t2的空值。像这样:

SELECT
   t1.n
FROM
   table1 AS t1
   LEFT JOIN table2 AS t2
     ON t1.n = t2.n
WHERE
    t2.n IS NULL


这是指向各种JOINS的出色参考的链接,其中包括Venn图,以帮助您可视化不同的联接方法。

http://blog.codinghorror.com/a-visual-explanation-of-sql-joins/

10-04 13:06
查看更多