我希望下面第三个查询的结果包含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:



这正是您的情况。
INNOT IN都返回NULL,这是WHERE子句 Not Acceptable 条件。

重写查询,如下所示:

SELECT  *
FROM    match m
WHERE   NOT EXISTS
        (
        SELECT  1
        FROM    email e
        WHERE   e.id = m.id
        )

10-08 08:42
查看更多