我有以下 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 时匹配。
我有以下 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 时匹配。
尝试
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 是您的 OR 语句的结果。
尝试:
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