在我看来,你可以使用NOT EXISTS,NOT IN或LEFT JOIN WHERE为NULL在SQL查询中做同样的事情.例如:
SELECT a FROM table1 WHERE a NOT IN (SELECT a FROM table2)
SELECT a FROM table1 WHERE NOT EXISTS (SELECT * FROM table2 WHERE table1.a = table2.a)
SELECT a FROM table1 LEFT JOIN table2 ON table1.a = table2.a WHERE table1.a IS NULL
Run Code Online (Sandbox Code Playgroud)
我不确定我的语法是否正确,但这些是我见过的一般技术.为什么我会选择使用一个而不是另一个?性能有所不同......?哪一个是最快/最有效的?(如果它取决于实施,我何时会使用每一个?)
我希望下面第三个查询的结果包含id = 732.它没有.这是为什么?
mysql> SELECT id FROM match ORDER BY id DESC LIMIT 5 ; +------------+ | id | +------------+ | 732 | | 730 | | 655 | | 458 | | 456 | +------------+ 5 rows in set (0.00 sec) mysql> SELECT id FROM email ORDER BY id DESC LIMIT 5 ; +------------+ | id | +------------+ | 731 | | 727 | | 725 | | 724 | | 723 | +------------+ 5 rows in set (0.00 …