【问题标题】:SQL Select Statement with WHERE, AND, OR带有 WHERE、AND 和 OR 的 SQL 选择语句
【发布时间】: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";

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

【问题讨论】:

    标签: mysql select operators where


    【解决方案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');

          【讨论】:

            猜你喜欢
            • 2012-12-06
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 1970-01-01
            • 2019-05-13
            • 1970-01-01
            相关资源
            最近更新 更多