2010-08-27 66 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");