SQL:根据另一列中的值删除记录

时间:2013-06-19 19:13:29

标签: sql sql-server sql-delete

请参阅我的小提琴示例:

http://sqlfiddle.com/#!3/1aaea/1

我的目标是删除所有没有迁移值为'Y'的供应商。因此,对于我的小提琴,只应删除供应商B和D.我正在努力解决如何删除所有migrate ='n'的供应商,但保留那些已迁移='y'的供应商,即使他们的值为migrate ='n'。

如何包含已迁移='y'的供应商,并排除那些没有?

的供应商

我觉得我的想法太难了,答案就在我的鼻子底下......

1 个答案:

答案 0 :(得分:1)

您可以通过在where子句中测试条件来执行此操作:

delete from example
    where not exists (select 1
                      from example e2
                      where e2.vendor = example.vendor and
                            e2.migrate = 'Y'
                     );

要在SQLFiddle中对此进行测试,您需要将delete放在左侧窗口(架构窗口)中,而不是放在查询窗口中。