2009-03-27 13 views
2

クエリ'SELECT foo FROM bar WHERE a = x AND b = y OR c = z'が与えられた場合、このクエリはどのように解析されますか?MySQL論理演算子

(a = x AND b = y) OR c = z
a = x AND (b = y OR c = z)

これは簡単な例ですが、AND/ORとさらに多くの検索語を混在させて一致させるのはどうですか?

答えて

3

既に回答したように、ANDが優先され、最初に解析されます。

あなたが実際に探している答えは、SELECT foo FROM bar WHERE a = x AND b = y OR c = zのようなクエリを書いてはいけないと思います。

SELECT foo FROM bar WHERE ((a = x AND b = y) OR c = z)の場合、またはSELECT foo FROM bar WHERE (a = x AND (b = y OR c = z))の場合は最初から書きます。

また、来週(または月、または年)にクエリを見たときにそれを把握する必要がなくなり、今後のメンテナにとっても簡単になります。