在分析了我的问题后,我想我可能需要在SQL中使用“union”运算符,但我不确定。任何我在codeigniter中链接我的查询来提出这个查询:
SELECT *
FROM (`deals`)
WHERE `category` = 'books'
AND `host` = 'amazon'
OR `host` = 'zappos'
OR `host` = 'newegg'
ORDER BY `time` desc
因此,它会选择不属于类别书籍但来自这些主机的内容。所以我希望能够让它只返回书中的结果,并拥有这三者中的任何一个。我更喜欢使用数据库查询而不是之后手动过滤。 我正在使用带有innoDB表的MySQL。感谢
答案 0 :(得分:10)
使用括号使其按预期工作。
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
答案 1 :(得分:0)
尝试一些括号:
SELECT *
FROM (`deals`)
WHERE `category` = 'books'
AND (
`host` = 'amazon'
OR `host` = 'zappos'
OR `host` = 'newegg'
)
ORDER BY `time` desc