查询删除记录

时间:2010-09-21 10:48:29

标签: sql sql-server sql-server-2005

我有一个包含以下字段的表格。我的要求是从表中删除记录 1.标志设置为“否” 2.对于标题,如果标志设置为“否”,则在一个记录中;如果设置为“是”,则在另一个记录中。删除这两个记录。例如TH-123,在第1个记录中,标志设置为“否”,第4个记录标志设置为“是”,删除两个记录。 3.对于标题,如果标志设置为“否”,则在一个记录中;如果设置为“空格”,则在另一个记录中。删除这两个记录。例如TH-344。删除这两个记录。

   Title                        Flag     

    TH-123                        No
    TH-344                        
    TH-543                        No
    TH-123                        Yes
    Th-344                        No
    Th-098                        Yes
    Th-876                        Yes
    Th-098                        Yes
    Th-512                        No

所以现在我期待一个结果,有以下记录。

    Th-098                        Yes
    Th-876                        Yes
    Th-098                        Yes

我已经完成了2次查询。

update temp1 set [flag] = 'No' WHERE Title IN 
(SELECT Title FROM temp1 where [flag] = 'No')

delete from temp1 where [flag] = 'No'

是否可以使用单个查询。如果是这样,请告诉我或任何其他更好的程序..

2 个答案:

答案 0 :(得分:4)

delete from temp1 
where 
    Title IN 
        (SELECT Title FROM temp1 where [flag] = 'No')

答案 1 :(得分:1)

这应该有效:

delete from t1
from temp1 t1
  inner join temp2 t2 on t1.Title = t2.Title
where t2.[flag] = 'No'