我期望下面第三個查詢的結果包含id = 732。它沒有。這是爲什麼?MySQL SELECT x FROM WHERE NOT IN(SELECT x FROM b) - 意外的結果
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 sec) mysql> SELECT * FROM match WHERE id NOT IN (SELECT id FROM email) ; Empty set (0.00 sec)
表email.id中有三個NULL條目,match.id中沒有NULL條目。
全表/查詢可以在http://pastebin.ca/1462094
這是OP的情況嗎?我的理解是,「如果找不到匹配並且列表中的一個表達式爲NULL」不是這種情況,因爲應該找到732,從而使該條款無效,對吧? – Eric 2009-06-16 12:35:30
@Eric:732在電子郵件中找不到。 – Quassnoi 2009-06-16 12:37:52