優先順位 があります 論理演算子を使用します。疑わしい場合は、括弧を使用してください。
あなたの場合:
SELECT * FROM database WHERE (name = var1 OR name = var2 OR name = var3) AND id < 200
AND
のため、元のクエリは次のように解釈されました。 優先順位が高くなります。
SELECT * FROM database WHERE name = var1 OR name = var2 OR (name = var3 AND id < 200)
更新
ロケットのコメントによる 、OR
を要約できます IN
へのステートメント
同じフィールドで動作するためです。そうすることで、括弧が不要になります。
SELECT * FROM database WHERE name IN (var1,var2,var3) AND id < 200
それでも、必然的に複数の条件でクエリを作成するため、2つの元のクエリの違いを理解することが重要です。