-3

簡単な SQL クエリがあります。

SELECT
    w.fizz
FROM
    widgets w
WHERE
    w.special_id = 2394
    AND w.buzz IS NOT NULL
    AND w.foo = 12

疑似コードでは、このWHERE句は次のように考えることができます。

if(specialId == 2394 && buzz != null && foo == 12)

このクエリを変更して、special_id が 2394 で、buzz が null ではなく、foo が 12 である、またはspecial_id が 2394 で、blah が「YES」で、num が 4 のすべてのウィジェットを返すようにします。 . 擬似コード:

if(specialId == 2394 && (buzz != null && foo == 12) || (blah == "YES" && num == 4))

エラーが発生するためだけに、次のことを試しました。

SELECT
    w.fizz
FROM
    widgets w
WHERE
    w.special_id = 2394
    AND
    (
        w.buzz IS NOT NULL
        AND w.foo = 12
    )
    OR
    (
        w.blah = 'YES'
        AND w.num = 4
    )

何か案は?前もって感謝します!

4

1 に答える 1

0
SELECT
    w.fizz
FROM
    widgets w
WHERE
    w.special_id = 2394
    AND
    (
        (
            w.buzz != null
            AND w.foo = 12
        )
        OR
        (
            w.blah = 'YES'
            AND w.num = 4
        )
    )

「OR」は「AND」よりも優先順位が低いため、「OR」を囲む括弧を追加します。

于 2013-03-28T13:18:49.983 に答える