sql >> データベース >  >> RDS >> Mysql

Mysqlまたは/および優先順位?

    MySQLのドキュメントには、適切なページ があります。 どの演算子が優先されるかに関する情報が含まれています。

    そのページから

    12.3.1。演算子の優先順位

    次のリストに、優先順位の高いものから低いものへと、演算子の優先順位を示します。 1行に一緒に表示される演算子は、同じ優先順位を持ちます。

    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), :=
    

    つまり、元のクエリ

    Select
        *
    from tablename 
    where
        display = 1
        or display = 2
        and content like "%hello world%"
        or tags like "%hello world%"
        or title = "%hello world%"
    

    と解釈されます
    Select
        *
    from tablename 
    where 
        (display = 1)
        or (
            (display = 2)
            and (content like "%hello world%")
        )
        or (tags like "%hello world%")
        or (title = "%hello world%")
    

    疑わしい場合は、括弧を使用して意図を明確にしてください。 MySQLページの情報は役に立ちますが、クエリが再検討されたかどうかはすぐにはわからない場合があります。

    あなたは次のようなことを考えるかもしれません。 title = "%hello world%"を変更したことに注意してください title like "%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%")
        )
    


    1. PostgreSQLのOracle高可用性の概念

    2. SQLServerトランザクションレプリケーションの内部

    3. DB2からPostgreSQLへの移行-知っておくべきこと

    4. Kubernetes AWSでのJenkinsの使用、パート3