SQL查询消除行

时间:2009-07-29 10:27:19

标签: sql

我有一个数据表,看起来像这样:

ID       CODE

1        FOO
1        FOO2
1        FOO3
1        BADCODE
2        FOO
2        FOO2

当我对此表执行查询时,如果找到错误的代码,我基本上想要对包含相同ID的所有行进行折扣。因此,在上面的示例中,由于在其中一行中找到了错误代码,因此将返回ID为1的任何内容。

很抱歉,如果没有以最有说服力的方式解释这一点。有什么想法吗?

2 个答案:

答案 0 :(得分:3)

SELECT  *
FROM    mytable mo
WHERE   NOT EXISTS
        (
        SELECT  NULL
        FROM    mytable mi
        WHERE   mi.id = mo.id
                AND mi.code = 'BADCODE'
        )

答案 1 :(得分:3)

SELECT * FROM mytable WHERE id NOT IN (SELECT id FROM mytable WHERE code = 'BADCODE')