【问题标题】:Chaining queries - Can't get AND/OR working链接查询 - 无法使用 AND/OR
【发布时间】:2010-12-20 03:08:33
【问题描述】:

分析我的问题后,我想我可能需要在 SQL 中使用“联合”运算符,但我不确定。任何我在 codeigniter 中链接我的查询来得出这个查询的人:

SELECT *
FROM (`deals`)
WHERE `category` = 'books'
AND `host` = 'amazon'
OR `host` = 'zappos'
OR `host` = 'newegg'
ORDER BY `time` desc 

因此,它会选择不在类别书籍中但来自这些主机的内容。所以我希望让它只返回书籍中的结果,并且拥有这三个中的任何一个。我更喜欢使用数据库查询来执行此操作,而不是事后手动过滤。 我正在使用带有 innoDB 表的 MySQL。谢谢

【问题讨论】:

    标签: php sql mysql codeigniter


    【解决方案1】:

    使用括号使其按需要工作。

    SELECT *
    FROM (`deals`)
    WHERE `category` = 'books'
    AND ( `host` = 'amazon'
    OR `host` = 'zappos'
    OR `host` = 'newegg' )
    ORDER BY `time` desc
    

    或者使用'IN'关键字:

    SELECT *
    FROM (`deals`)
    WHERE `category` = 'books'
    AND `host` IN ( 'amazon', 'zappos', 'newegg' )
    ORDER BY `time` desc
    

    【讨论】:

    • 我认为IN子句是最好的选择
    • 我同意 IN 子句在这里最合乎逻辑:)
    【解决方案2】:

    尝试一些括号:

    SELECT *
    FROM (`deals`)
    WHERE `category` = 'books'
    AND ( 
    `host` = 'amazon'
    OR `host` = 'zappos'
    OR `host` = 'newegg'
    )
    ORDER BY `time` desc 
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2011-04-10
      • 1970-01-01
      • 1970-01-01
      • 2022-10-20
      • 2015-03-25
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多