web-dev-qa-db-fra.com

Instruction SQL Select avec WHERE, AND, OR

J'aimerais effectuer une requête SELECT avec MySQL. Mon objectif est de sélectionner tous les chiens dans une base de données vétérinaire qui seraient sex=male et fur=short et (color=black or size=big).

Remarque: je veux sélectionner des chiens noirs ou de grande taille. Ils ne doivent pas remplir les 2 exigences. Ils ont juste besoin de remplir l'un ou l'autre.

J'ai écrit l'instruction SQL ci-dessous mais je ne suis pas sûr d'avoir raison:

SELECT name, sex, fur, color 
FROM dogs 
WHERE TRUE sex='male' AND fur='short' AND color='black' OR size="big";

Pardon mon phrasé si c'est trop déroutant.

13
dave

Selon , la priorité de l'opérateur pour MySQLAND a une priorité plus élevée que OR.

Donc C1 AND C2 OR C3 sera traité comme (C1 AND C2) OR C3

Pour remplacer la priorité par défaut, vous devez utiliser des parenthèses en tant que: C1 AND (C2 OR C3)

Dans votre cas, la bonne requête est:

SELECT name, sex, fur, color 
FROM dogs 
WHERE sex='male' AND fur='short' AND (color='black' OR size="big");
30
codaddict

Assurez-vous d’ajouter des parenthèses afin que la condition OR soit évaluée correctement.

SELECT name, sex, fur, color 
FROM dogs 
WHERE sex='male' AND fur='short' AND (color='black' OR size='big');
4
Lance Rushing

La façon dont vous utilisez les parenthèses dans la description de votre objectif est correcte. La syntaxe est la suivante:

SELECT name, sex, fur, color 
    FROM dogs 
    WHERE sex="male" AND fur="short" AND (color="black" OR size="big");
1
cherouvim

J'ai utilisé ceci et son fonctionnement;

SELECT name, sex, fur, color 
FROM dogs 
WHERE sex="male" AND fur="short" AND (color="black" || size="big");
0
user1350714