SQL选择语句与WHERE,AND,OR

问题描述 投票:13回答:5

我想用MySQL执行SELECT查询。我的目标是选择兽医数据库中的所有狗,这些狗将是sex=malefur=short和(color=black or size=big

注意:我想选择黑色或大小的狗。它们不必满足2个要求。他们只需要完成其中任何一个。

我在下面编写了SQL语句,但我不确定我是否正确:

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

请原谅我的措辞,如果它太混乱了。

mysql select operators where
5个回答
31
投票

根据Operator precedence for MySQL AND的优先级高于OR

所以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");

4
投票

确保添加括号,以便正确评估OR条件。

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

1
投票

在目标描述中使用括号的方式是正确的。语法是:

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

0
投票

我用过它和它的工作;

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

0
投票

选择名字,性别,皮毛,颜色来自狗的性别='男性'和毛皮='短'和(颜色='黑色'或尺寸='大');

© www.soinside.com 2019 - 2024. All rights reserved.