带有 WHERE、AND 和 OR 的 SQL 选择语句
Posted
技术标签:
【中文标题】带有 WHERE、AND 和 OR 的 SQL 选择语句【英文标题】:SQL Select Statement with WHERE, AND, OR 【发布时间】:2011-04-04 15:38:26 【问题描述】:我想使用 mysql 执行 SELECT
查询。我的目标是在兽医数据库中选择sex=male
、fur=short
和 (color=black or size=big
) 中的所有狗
注意:我想选择黑色或大号的狗。他们不必满足这两个要求。他们只需要满足其中一个。
我已经写了下面的SQL语句,但我不确定我是否正确:
SELECT name, sex, fur, color
FROM dogs
WHERE TRUE 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");
【讨论】:
【参考方案2】:根据Operator precedence for MySQLAND
的优先级高于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");
【讨论】:
感谢 codaddict。 'WHERE TRUE' 和“sex='name'”之间应该有一个“AND”吗?【参考方案3】:确保添加括号,以便正确评估 OR 条件。
SELECT name, sex, fur, color
FROM dogs
WHERE sex='male' AND fur='short' AND (color='black' OR size='big');
【讨论】:
【参考方案4】:我已经使用了这个及其工作;
SELECT name, sex, fur, color
FROM dogs
WHERE sex="male" AND fur="short" AND (color="black" || size="big");
【讨论】:
【参考方案5】:从狗中选择姓名、性别、毛皮、颜色,其中性别 ='male' 和 fur ='short' and (color ='black' or size ='big');
【讨论】:
以上是关于带有 WHERE、AND 和 OR 的 SQL 选择语句的主要内容,如果未能解决你的问题,请参考以下文章
带有 INNER JOIN 和 WHERE 的 SQL 查询
带有可选 Where 子句和 Sql Server CE 的 Linq