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」の列を返すため、間違った結果を返しています。これは最初の 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 つが真である必要があると考える場合、それを括弧で囲むことは、条件 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 に答える