从 DB2 中的表中删除重复项
Posted
技术标签:
【中文标题】从 DB2 中的表中删除重复项【英文标题】:Removing duplicates from a table in DB2 【发布时间】:2015-07-22 20:20:47 【问题描述】:我在 DB2 中有一个表 TAB1
,如下所示:
ID Status
_______________________
10 Open
8 Closed
7 Open
10 Closed
7 Open
9 Open
11 Open
5 Closed
_______________________
我想根据以下业务规则在单个 sql 查询中从上表中删除重复项:
1) 如果ID
重复,请删除带有Status
Closed
的那个。例如应删除带有Closed
的条目10
。
2) 如果ID
重复且Status
也相同,则应删除所有重复条目。例如ID
7
和 Status
Open
的两个条目都应删除。
如何在单个删除查询中实现这一点?
感谢阅读!
【问题讨论】:
【参考方案1】:我认为以下几乎是您要求的直接翻译:
delete from tab1
where (tab1.status = 'closed' and
exists (select 1
from tab1 t2
where t2.id = tab1.id and t2.status <> 'closed'
)
) or
(select count(*)
from tab1 t2
where t2.id = tab1.id and t2.status = tab1.status
) > 1;
【讨论】:
以上是关于从 DB2 中的表中删除重复项的主要内容,如果未能解决你的问题,请参考以下文章