104 votes

Condition SQL WHERE, pas égale à?

Est-il possible de nier une clause where?

par exemple

 DELETE * FROM table WHERE id != 2;
 

172voto

Lobo Points 3923

Tu peux faire comme ça

 DELETE FROM table WHERE id NOT IN ( 2 )
 

OU

 DELETE FROM table WHERE id <>  2 
 

Comme @Frank Schmitt l'a noté, vous voudrez peut-être aussi faire attention aux valeurs NULL. Si vous souhaitez supprimer tout ce qui n'est pas 2 (y compris les valeurs NULL), ajoutez OR id IS NULL à la clause WHERE.

32voto

Frank Schmitt Points 13554

Les autres affiches ont déjà répondu à votre question. J'aimerais simplement souligner que

  delete from table where id <> 2
 

(ou leurs variantes, pas id = 2, etc.) ne supprimera pas les lignes où id est NULL.

Si vous souhaitez également supprimer des lignes avec id = NULL:

 delete from table where id <> 2 or id is NULL
 

12voto

Fosco Points 20573
 delete from table where id <> 2
 



edit: corriger la syntaxe pour MySQL

9voto

Brandon Points 35624

Utilisez <> pour annuler la clause where.

6voto

JNK Points 32743

WHERE id <> 2 devrait fonctionner correctement ... Est-ce ce que vous recherchez?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X