2010-08-27 19 views
10

Vorrei eseguire una query SELECT con MySQL. Il mio obiettivo è selezionare tutti i cani in un database veterinario che sarebbe sesso = maschio e pelliccia = corto e (colore = nero o taglia = grande)Istruzione SQL Select con WHERE, AND, OR

Nota: desidero selezionare cani di colore nero o di taglia grande. Non devono soddisfare i 2 requisiti. Devono solo soddisfare uno dei due.

ho scritto l'istruzione SQL di seguito, ma io non sono sicuro se ho ragione:

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

Perdono mio fraseggio se è troppo confusa.

risposta

23

Secondo Operator precedence for MySQLAND ha precedenza maggiore rispetto OR.

Così C1 AND C2 OR C3 saranno trattati come (C1 AND C2) OR C3

Per ignorare la precedenza di default è necessario utilizzare le parentesi come: C1 AND (C2 OR C3)

Nel tuo caso la domanda giusta è:

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

Codaddict di Thnaks. Dovrebbe esserci un 'AND' tra 'WHERE TRUE' e 'sex =' name '"? – dave

+0

Hai ragione puoi avere 'TRUE AND C1 ...' o solo 'C1 ....' – codaddict

1

Il modo in cui si utilizzano le parentesi nella descrizione del proprio obiettivo è corretto. La sintassi è la seguente:

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

Cheers cherouvim. Buona visione. – dave

3

Assicurarsi per aggiungere parentesi, quindi la condizione OR viene valutata correttamente.

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

Cheers Lance. Buona visione. – dave

0

Ho usato questo e il suo funzionamento;

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