ホームページ >データベース >mysql チュートリアル >MySQL は「WHERE」句の「OR」演算子と「AND」演算子をどのように評価しますか?
MySQL OR/AND の優先順位
MySQL の論理演算子には、クエリ内で複数の条件がどのように評価されるかを決定する特定の優先順位ルールがあります。これらのルールを理解することは、効率的で正確なクエリを作成するために非常に重要です。
クエリに関して、表示が 1 または 2 で、コンテンツ、タグ、またはタイトルのいずれかに「hello world」が含まれる行を取得したいと考えています。 MySQL 演算子の優先規則は次のとおりです。
(highest precedence) INTERVAL BINARY, COLLATE ! - (unary minus), ~ (unary bit inversion) ^ *, /, DIV, %, MOD -, + <<, >> & | = (comparison), <=, >=, >, <, <>, !=, IS, LIKE, REGEXP, IN BETWEEN, CASE, WHEN, THEN, ELSE NOT &&, AND XOR ||, OR = (assignment), := (lowest precedence)
これらの規則を念頭に置いて、クエリを分析してみましょう。
Select * from tablename where display = 1 or display = 2 and content like "%hello world%" or tags like "%hello world%" or title = "%hello world%"
優先規則に従って、論理演算子は括弧内で評価されます。 :
OR が AND よりも優先されるため、クエリは次のように解釈されます:
Select * from tablename where (display = 1 or display = 2) and (content like "%hello world%" or (tags like "%hello world%" or title = "%hello world%"))
したがって、クエリは次のように解釈されます。行:
混乱を避けるため、括弧を使用して目的の評価順序を明示的に示すことをお勧めします。たとえば、次のクエリは、表示が 1 または 2 である行、またはコンテンツ、タグ、またはタイトルのいずれかに「hello world」が含まれる行を取得します:
Select * from tablename where (display = 1 or display = 2) and (content like "%hello world%" or tags like "%hello world%" or title like "%hello world%")
以上がMySQL は「WHERE」句の「OR」演算子と「AND」演算子をどのように評価しますか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。