链接查询 - 无法获得AND / OR工作

时间:2010-12-20 03:08:34

标签: php sql mysql codeigniter

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

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

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

2 个答案:

答案 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