0

我有以下 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 时匹配。

4

2 回答 2

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 是您的 OR 语句的结果。

于 2013-11-12T15:41:57.760 回答
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

于 2013-11-12T15:41:33.593 回答