我有一个数据表,看起来像这样:
ID CODE
1 FOO
1 FOO2
1 FOO3
1 BADCODE
2 FOO
2 FOO2
当我对此表执行查询时,如果找到错误的代码,我基本上想要对包含相同ID的所有行进行折扣。因此,在上面的示例中,由于在其中一行中找到了错误代码,因此将返回ID为1的任何内容。
很抱歉,如果没有以最有说服力的方式解释这一点。有什么想法吗?
答案 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')