2013-06-19 36 views
0

請參閱我搗鼓的例子:SQL:刪除基於值的記錄在另一列

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

我的目標是刪除有「Y」的無遷移價值的所有供應商。所以在我的小提琴的情況下,只有供應商B和D應該被刪除。我正在努力如何刪除migrate ='n'的所有供應商,但保留migrate ='y'的供應商,即使他們的migrate值爲'n'。

如何將包含migrate ='y'的供應商包括在內,並排除不包含供應商的供應商?

我覺得我的想法太硬,答案就在我的鼻子....

回答

1

您可以通過在where條款測試的條件做到這一點:

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

要在SQLFiddle中測試它,您需要將delete放在左窗口(模式窗口)中,而不是在查詢窗口中。

+0

是的,那是做到了。謝謝戈登。 – Keven