Je m'attends à ce que le résultat de la troisième requête ci-dessous contienne id = 732. Ce n'est pas le cas. Pourquoi donc?MySQL SELECT x À PARTIR D'UN O WH PAS DANS (SELECT x FROM b) - Résultat inattendu
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)
Il y a trois entrées NULL dans le tableau email.id, et aucune entrée NULL dans match.id.
Le tableau complet/requêtes peut être vu à http://pastebin.ca/1462094
Est-ce le cas de l'OP? Ma compréhension était que le "si aucune correspondance est trouvé et l'une des expressions dans la liste est NULL" n'est pas le cas puisque 732 devrait être trouvé, invalidant ainsi cette clause, non? – Eric
@Eric: 732 n'est pas trouvé dans les emails. – Quassnoi
@Quassnoi: Vous avez raison, cerveau laps :) – Eric