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.
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");
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');
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");
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");