【问题标题】:SQL query to select where A='foo' and where (A='bar' and B='baz')SQL 查询选择 where A='foo' 和 where (A='bar' and B='baz')
【发布时间】:2010-06-30 23:08:30
【问题描述】:

我有下一个 SQL 查询:

SELECT FIRST_NAME, LAST_NAME
FROM MYTABLE
WHERE STATUS = 1 AND VARIABLE IN ( 'PR', 'AR' ) AND SPECIAL = 1;

SPECIAL 是一个附加条件,如果我之前在表单中选择了“PR”(复选框),则会添加该条件。问题是,通过这个查询,我不再获得 VARIABLE 为 'AR' 的行。

现在的想法是,当 VARIABLE 为“PR”或“AR”时,此查询应返回任何行,但如果是“PR”,则从这个“PR”组中,它应该只返回 特殊。我的意思是,它仍然应该显示 VARIABLE = 'AR' 的行,但是如果 SPECIAL = 1,那么那些是 'PR' 的行应该只有那些 SPECIAL = 1 的行。

【问题讨论】:

  • if SPECIAL = 1, then ... only those where SPECIAL = 1. 我想我知道你的意思,但你写它的方式令人困惑。
  • 我知道,对不起。我的母语不是英语,而且我完全被吓坏了。

标签: sql logic


【解决方案1】:

由于这是一项作业,我认为最好解释一下如何做,而不是只给你复制和粘贴的代码。

您要选择 STATUS = 1 其中之一的行:

  • 变量是“AR”

  • VARIABLE 是 'PR' 并且 SPECIAL = 1。

使用ANDOR 的组合。请记住,AND 的优先级高于 OR。使用括号明确说明应该如何计算表达式是个好主意。

【讨论】:

  • 非常感谢。我开始更频繁地受到这些大脑空白的冲击。再次感谢。
【解决方案2】:
SELECT FIRST_NAME, LAST_NAME FROM MYTABLE WHERE 
  STATUS = 1 AND (
    VARIABLE = 'AR' OR (SPECIAL = 1 AND VARIABLE = 'PR')
  );

SQL 对逻辑运算符的支持非常强大,您不仅限于 AND。

【讨论】:

    【解决方案3】:

    如果我的理解正确并且您想要 ("AR") 或 ("PR" and SPECIAL = "1"),那么试试这个:

    SELECT FIRST_NAME, LAST_NAME FROM MYTABLE 
    WHERE STATUS = 1 AND (VARIABLE = 'AR' OR (VARIABLE = 'PR' AND SPECIAL = 1));
    

    【讨论】:

      【解决方案4】:

      你需要和 OR 语句,试试这个:

      SELECT FIRST_NAME, LAST_NAME FROM MYTABLE WHERE STATUS = 1 AND ( VARIABLE = 'PR' AND SPECIAL = 1 OR VARIABLE += 'AR' );
      

      【讨论】:

        【解决方案5】:

        我认为,要使其按您希望的方式工作,您需要做的就是将不同的标准分解为用括号括起来的单独的逻辑分组。如果我正确理解你的问题,你想要这样的东西:

        SELECT FIRST_NAME, LAST_NAME FROM MYTABLE WHERE (STATUS = 1) AND ((VARIABLE = 'PR' AND SPECIAL = 1) OR (VARIABLE ='AR')) ;
        

        【讨论】:

        • status = 1 周围不需要括号(但它仍然有效)并且它包含在他的原始 SQL 中 - 你的意思是什么?
        • 嗯?你抱怨过自己的回答吗?
        • 哦,奇怪 - 有人评论了我的回答,然后他们删除了他们的评论,我猜。
        猜你喜欢
        • 1970-01-01
        • 2013-07-15
        • 2013-09-17
        • 1970-01-01
        • 1970-01-01
        • 2022-11-15
        • 2021-11-28
        • 1970-01-01
        • 2011-03-26
        相关资源
        最近更新 更多