J'ai eu un collègue aujourd'hui écrire une mise à jour SQL incorrectement écrite.Comment cette instruction de mise à jour fonctionne-t-elle?
UPDATE table SET column = 'change'
WHERE id = 2401 OR 2402 OR 2403 OR 2404 OR 2405 OR 2406;
Query OK, 264 rows affected (0.03 sec)
Rows matched: 9997 Changed: 264 Warnings: 0
Pourquoi cela fonctionnerait-il?
Je pensais au plus mettre à jour 1 ligne avec ID étant unique. et 2402 et 2403 .... etc ne correspondant à rien.
Elle a mis à jour chaque ligne de la table, car MySQL a interprété chaque ID de 2402 comme vrai. 'où ID = 2401 OU Vrai OU Vrai OU Vrai OU Vrai;' –
Bienvenue dans le monde merveilleux de MySQL qui, au lieu de rejeter le code SQL incorrect, essaie de deviner ce que vous vouliez rendre votre vie plus facile. Je considère cela comme un bug dans MySQL - la syntaxe SQL est tout à fait fausse et ne devrait pas fonctionner en premier lieu. –