带有 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=malefur=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、AND 和 OR 的 SQL 选择语句

带有可选 Where 子句和 Sql Server CE 的 Linq

SQL:如何在带有“NOT IN”条件的“Where”子句中使用“and”和“or”

Sqoop导入具有带有where子句和并行处理的SQL查询

带有 INSERT 和 WHERE NOT EXISTS 的奇怪 SQL 行为