Ich erwarte das Ergebnis der dritten Abfrage unten enthalten ID = 732. Es tut es nicht. Warum das?MySQL SELECT x FROM ein WHERE NICHT IN (SELECT x FROM b) - Unerwartete Ergebnis
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)
Es gibt drei NULL-Einträge in der Tabelle email.id und keine NULL-Einträge in der Datei match.id.
Die vollständige Tabelle/können Abfragen bei http://pastebin.ca/1462094
Ist es der Fall des OP? Mein Verständnis war, dass "wenn keine Übereinstimmung gefunden wird und einer der Ausdrücke in der Liste NULL ist" nicht der Fall ist, da 732 gefunden werden sollte, wodurch diese Klausel ungültig wird, richtig? – Eric
@Eric: 732 wird nicht in E-Mails gefunden. – Quassnoi
@Quassnoi: Du hast Recht, Gehirn-Lapsus :) – Eric