delete FROM tuan_details where tuan_id<>14
Cela ne devrait conserver que les lignes où tuan_id est égal à 14, mais les lignes où tuan_id est nul sont également conservées.MySql ne renvoie pas les résultats comme prévu
Pourquoi est-ce vrai?
delete FROM tuan_details where tuan_id<>14
Cela ne devrait conserver que les lignes où tuan_id est égal à 14, mais les lignes où tuan_id est nul sont également conservées.MySql ne renvoie pas les résultats comme prévu
Pourquoi est-ce vrai?
null n'est jamais inclus dans ces comparaisons, l'utilisation est null à la place.
http://dev.mysql.com/doc/refman/5.0/en/type-conversion.html
Vous pouvez également ajouter la ou condition dans votre requête
NULL
est spécial dans SQL. La condition que vous avez: tuan_id <> 14
sera TRUE
uniquement pour les valeurs qui sont différentes de 14
. Pour les lignes qui tuan_id
est-NULL
, les:
tuan_id <> 14
sera:
NULL <> 14
qui évalue à:
UNKNOWN
de sorte que ces lignes sont pas supprimé. WHERE
conditions sont satisfaites lorsqu'ils évaluent à TRUE
. Ils sont rejetés lorsqu'ils évaluent FALSE
ou UNKNOWN
.
SQL utilise un 3-valued logic
Donc, si vous voulez supprimer les valeurs nulles aussi bien, vous pouvez utiliser cette instruction:
DELETE
FROM tuan_details
WHERE tuan_id <> 14
OR tuan_id IS NULL ;