表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的第二个条件是相同的?
答案 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)