我希望下面第三个查询的结果包含id = 732。没有。这是为什么?
mysql> SELECT id FROM match ORDER BY id DESC LIMIT 5;
+ ------------ +
| id |
+ ------------ +
| 732 |
| 730 |
| 655 |
| 458 |
| 456 |
+ ------------ +
设置5行(0.00秒)
mysql> SELECT id from email ORDER BY id DESC LIMIT 5;
+ ------------ +
| id |
+ ------------ +
| 731 |
| 727 |
| 725 |
| 724 |
| 723 |
+ ------------ +
设置5行(0.00秒)
mysql> SELECT * FROM匹配WHERE ID NOT IN(SELECT ID FROM email);
空置(0.00秒)
表email.id中有三个NULL条目,match.id中没有NULL条目。
完整表/查询可以在上看到http://pastebin.ca/1462094
最佳答案
从documentation:
这正是您的情况。IN
和NOT IN
都返回NULL
,这是WHERE
子句 Not Acceptable 条件。
重写查询,如下所示:
SELECT *
FROM match m
WHERE NOT EXISTS
(
SELECT 1
FROM email e
WHERE e.id = m.id
)