我有以下SQL查询:
SELECT *
FROM UserTags
INNER JOIN Events ON UserTags.E_ID=Events.E_ID
WHERE ID = 2
AND Tag='coffee'
OR Tag='breakfast_brunch'
OR Tag='scandinavian'
这会返回错误的结果,因为它返回的是`ID!= 2'的列。我相信这是试图匹配前两个,其次是其他?我希望查询只在ID = 2时匹配。
答案 0 :(得分:3)
尝试
SELECT * FROM UserTags INNER JOIN Events ON UserTags.E_ID=Events.E_ID WHERE ID = 2 AND (Tag='coffee' OR Tag='breakfast_brunch' OR Tag='scandinavian')
如果您认为它是第一个条件必须为真(ID = 2)并且其中一个条件必须为真,那么将它放在括号中意味着您比较条件1和条件2,其中条件2是您的结果或声明。
答案 1 :(得分:1)
尝试:
SELECT * FROM UserTags
INNER JOIN Events ON UserTags.E_ID=Events.E_ID
WHERE ID = 2 AND
(Tag='coffee' OR Tag='breakfast_brunch' OR Tag='scandinavian')
阅读有关AND
OR
订购的文章:http://www.bennadel.com/blog/126-SQL-AND-OR-Order-of-Operations.htm