2011-11-16 111 views
1

我使用SQL Server 2000删除与condtion记录

表1

ID Date 

001 23/02/2009 
001 24/02/2009 
002 25/02/2009 
.... 

表2

ID Date 

001 23/02/2009 
002 25/02/2009 

查询像

Delete from table1 where table1.id = table2.id and table1.date = table2.date 

如何进行查询的以上条件为

+2

为什么倒票?这显然是一个关于如何使用辅助表作为删除源的问题。 OP所做的尝试非常接近,5人已经理解并试图回答这个问题,所以至少“清楚”了。 –

回答

3
delete table1 
from table2 
where table1.id = table2.id and 
     table1.date = table2.date 

delete table1使table1成为删除对象。你可以写delete from table1,但from是可选的。

from table2指定删除的来源。使用from子句中的“second”是一个用于匹配相应行的t-sql扩展。

最后,where子句加入列iddate上的表,导致table1中的匹配行被删除。

where table1.id = table2.id and 
     table1.date = table2.date 
+0

@markus增加了对删除命令的解释。请让我知道,如果我能帮助你进一步了解它。你可以在这里找到删除的文档:http://msdn.microsoft.com/en-us/library/ms189835.aspx –

+0

现在看起来好多了!感谢您的改进! – markus

1

我做

 

DELETE FROM TABLE1 
WHERE ID IN (SELECT t1.ID 
       FROM TABLE1 t1 
       INNER JOIN TABLE2 t2 ON t1.ID = t2.ID AND t1.Date = t2.Date) 

这种方式可以单独运行SELECT语句看到的数据将被删除

-1
DELETE FROM table1 
WHERE 
(SELECT table1.id, table2.id 
FROM table1, table2 
WHERE table1.id = table2.id and table1.date = table2.date) 
0

您也可以加入表一起删除:

DELETE FROM t1 
FROM Table1 AS t1 
INNER JOIN Table2 AS t2 ON t1.id = t2.id 
    AND t1.Date = t2.Date 
1

使用exists通常是更好的(快):

delete t1 
from table1 t1 
where exists (select 1 from table2 t2 where t1.id = t2.id and t1.date = t2.date) 
0

它可以在下面的方式来完成:

一个。使用联接操作

DELETE FROM Table1 
FROM Table1 INNER JOIN 
Table2 ON Table1.Date = Table2.Date AND Table1.Id = Table2.ID 

b。使用WHERE子句

DELETE TABLE1 
FROM TABLE2 
WHERE Table1.Date = Table2.Date AND Table1.Id = Table2.ID