2009-07-29 86 views
2

我有一个表的数据,看起来像这样:SQL查询来排除行

ID  CODE 

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

当我执行此表上我基本上是要打折了包含相同ID,如果所有行的查询发现错误的代码。所以在上面的例子中,由于在其中一行中发现了一个错误代码,所以没有ID为1的内容将被返回。

对不起,如果没有以最雄辩的方式解释。有任何想法吗?

回答

3

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

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