从条件中删除sql中的表

时间:2016-10-22 08:36:41

标签: sql sql-delete

buf中的数据如下:

tab_asg

我想删除此表start_date end_date person_id ------------------------------------ 19-08-2012 18-08-2012 1 19-08-2012 16-08-2016 1 17-08-2016 31-12-4712 1 中的第一行,前两行start_date是相同的。

where end_date < start_date

我已将条件delete from tab_asg where end_date <start_date; 添加到我的查询中。如何添加第一个两行start_date的第二个条件是相同的?

1 个答案:

答案 0 :(得分:1)

我认为最简单的方法是

首先将主键列ID添加到表中,然后使用唯一ID填充它。在SQL Server中,它看起来像这样:

ALTER TABLE tab_asg
ADD Id int NOT NULL IDENTITY(1,1)

然后从表中删除适当的行

DELETE FROM tab_asg 
WHERE Id IN 
(SELECT ta1.Id FROM tab_asg ta1 LEFT JOIN tab_asg ta2 
ON ta1.person_id = ta2.person_id AND ta1.start_date = ta2.start_date 
AND ta1.end_date < ta2.end_date WHERE ta2.end_date IS NOT NULL)