【发布时间】:2011-07-03 12:48:01
【问题描述】:
我有 2 个表,一个父 TableA 和一个子 TableB。表 B 有 1 条或多条记录,表 A 中有一条父记录。我需要从 TableB 中删除所有记录,但最早的日期除外,即 TableB 中的所有重复项。我认为 TableA 不需要参与该声明,但我将其包括在内仅供参考。
TableA
_______
SecID, SecName
1, Sec1
2, Sec2
3, Sec3
4, Sec4
TableB
_________
IncID, SecID, PayDate
16, 1, 11/03/2011
17, 1, 11/04/2011
18, 2, 10/01/2011
19, 3, 01/06/2011
20, 3, 01/09/2011
21, 3, 01/12/2011
22, 4, 10/06/2011
所以在上面的表 B 中,我需要删除记录 17、20 和 21,为每个 SecID 留下一条记录。到目前为止,我有以下但由于某种原因它包括我想保留的最早记录:
delete from TableB where PayDate not in (
select min(PayDate)from TableB
having ( count(PayDate) > 1 )
)
【问题讨论】: