在ANSI SQL中使用多个and和OR

在ANSI SQL中使用多个and和OR,sql,select,Sql,Select,我有一个简单的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) 我现在想更改这个查询,以便它返回所有widget,这些widget的

我有一个简单的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)
我现在想更改这个查询,以便它返回所有widget,这些widget的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
    )
有什么想法吗?提前谢谢

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
        )
    )
在“或”周围添加其他括号,因为“或”的优先级低于“和”