100 votes

MySQL O DANS ()

Ma requête est :

 SELECT * FROM table WHERE id IN (1,2,3,4);

Je l'utilise pour les groupes d'utilisateurs et un utilisateur peut appartenir à plusieurs groupes. mais il semble que lorsqu'un enregistrement a plusieurs identifiants comme 1 et 3, mySQL ne renvoie pas cette ligne.

Y a-t-il un moyen d'obtenir cette ligne aussi?

96voto

Starx Points 38727

Votre requête se traduit par

 SELECT * FROM table WHERE id='1' or id='2' or id='3' or id='4';

Il ne retournera que les résultats qui lui correspondent.


Une façon de le résoudre en évitant la complexité serait de changer le type de données en SET . Ensuite, vous pouvez utiliser FIND_IN_SET

 SELECT * FROM table WHERE FIND_IN_SET('1', id);

6voto

misbah dino Points 21

vous devez avoir un enregistrement dans une table ou un enregistrement de tableau dans la base de données.

Exemple:

 SELECT * FROM tabel_record
WHERE table_record.fieldName IN (SELECT fieldName FROM table_reference);

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