8
votes

Comment supprimer tout sauf pour 2 éléments spécifiques dans MySQL

J'essaie de supprimer tous les utilisateurs de mysql.user Sauf pour les utilisateurs "1" et "2";

J'ai couru cette commande mais il a également supprimé l'utilisateur "1" et "2"; xxx

i essayé xxx

même résultat, l'utilisateur "1" et "2" sont supprimés.


5 commentaires

Ce ne serait pas et ?


Je pense que "et" est l'endroit où plusieurs conditions pour la même ligne.


Et fonctionne - voir ma réponse ci-dessous ...


Pensez-y simplement en termes de langue anglaise: «Supprimer de l'utilisateur où l'utilisateur n'est pas égal à 1 et l'utilisateur n'est pas égal à 2." Dans le cas de ou il dirait "... ne correspond pas à l'utilisateur 1 ou n'est pas égal à 2." Si l'utilisateur est 1, il satisfait que la condition "ne correspond pas à 2" et vice versa.


ok je l'ai testé, et fonctionne réellement.


3 Réponses :


3
votes

Vous pouvez utiliser pas dans xxx

la raison pour laquelle les deux sont incluses sont simples. 1 <> 2 et 2 <> 1 .


2 commentaires

@Sumerkolcak <> signifie "non égal à"


Je n'avais aucune idée <> signifiait 'non égal à', ils ressemblent à "plus gros que" et "plus petit que" les symboles ". Je suppose que le monde a avancé.



15
votes

Ceci devrait fonctionner à l'aide de pas dans : xxx

Le problème avec votre requête est le ou - il enlève l'autre parce que 1 n'est pas égal à 2 et vice versa.

Votre requête fonctionnerait avec et : xxx

Démo SQL FIDDLE

vs:

SQL Fiddle Demo avec ou


1 commentaires

Merci, je vais avec et étant donné qu'il est plus en ligne avec la logique.



1
votes

Supprimer de MySQL.User où l'utilisateur n'est pas in ('1', '2')


1 commentaires

Incroyable, cela fonctionne aussi mais je préfère et parce que les codes ont vraiment besoin de loger. J'ai même pensé que cela aurait dû être ou pour qu'il soit vraiment logique.