2010-08-27 91 views
10

我想用MySQL執行SELECT查詢。我的目標是選擇一個獸醫數據庫中的所有狗,它們會是sex = male和fur = short,(color = black或size = big)SQL Select Where with,AND,或

注意:我想要選擇黑色或大小爲大。他們不必滿足2個要求。他們只需要完成任何一個。

我已經寫了下面的SQL語句,但我不是不知道,如果我是正確的:如果

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

原諒我的措辭是太混亂。

回答

23

根據Operator precedence for MySQLANDOR更高的優先級。

所以 C1 AND C2 OR C3將被視爲(C1 AND C2) OR C3

要覆蓋你需要使用括號中的默認優先級爲:C1 AND (C2 OR C3)

在你的情況下,右側的查詢是:

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

Thnaks codaddict。 「WHERE TRUE」和「sex ='name'」之間是否應該有'AND'? – dave 2010-08-27 06:28:57

+0

你是對的,你可以有'TRUE和C1 ...'或者只是'C1 ....' – codaddict 2010-08-27 06:33:26

1

您在目標描述中使用括號的方式是正確的。語法是:

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

Cheers cherouvim。祝你有個好的一天。 – dave 2010-08-27 06:31:13

3

確保添加圓括號,以便OR條件得到正確評估。

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

Cheers Lance。祝你有個好的一天。 – dave 2010-08-27 06:30:42

0

我已經使用了這個和它的工作;

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