我有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/