2010-08-27 7 views
10

Je voudrais effectuer une requête SELECT avec MySQL. Mon but est de sélectionner tous les chiens dans une base de données vétérinaire qui serait sex = male et fur = short et (color = black ou size = big)Instruction SQL Select avec WHERE, AND, OU

Note: Je veux sélectionner les chiens qui sont soit noir ou taille gros. Ils n'ont 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 si je ne me trompe pas:

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

Pardon mon phrasé si elle est trop confus.

Répondre

23

Selon Operator precedence for MySQLAND a une priorité supérieure OR.

Alors C1 AND C2 OR C3 seront traités comme (C1 AND C2) OR C3

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

Dans votre cas, la requête droite est:

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

Codaddict de Thnaks. Devrait-il y avoir un 'AND' entre 'WHERE TRUE' et 'sex =' name '"? – dave

+0

Vous avez raison, vous pouvez avoir 'TRUE AND C1 ...' ou juste 'C1 ....' – codaddict

1

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"); 
+0

Cheers cherouvim. Avoir un bon. – dave

3

Assurez-vous Pour ajouter des parenthèses, la condition OR est évaluée correctement.

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

Cheers Lance. Avoir un bon. – dave

0

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"); 
Questions connexes