从 DB2 中的 table 中删除重复项
Removing duplicates from a table in DB2
我在 DB2 中有一个 table TAB1
,如下所示:
ID Status
_______________________
10 Open
8 Closed
7 Open
10 Closed
7 Open
9 Open
11 Open
5 Closed
_______________________
我想根据以下业务规则在单个 sql 查询中删除上述 table 中的重复项:
1) 如果 ID
重复,删除带有 Status
Closed
的那个。例如条目 10
和 Closed
应该被删除。
2) 如果 ID
重复且 Status
也相同,则应删除所有重复条目。例如ID
7
和 Status
Open
的条目都应删除。
如何在单个删除查询中实现此目的?
感谢阅读!
我认为以下几乎是对您的要求的直接翻译:
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 中有一个 table TAB1
,如下所示:
ID Status
_______________________
10 Open
8 Closed
7 Open
10 Closed
7 Open
9 Open
11 Open
5 Closed
_______________________
我想根据以下业务规则在单个 sql 查询中删除上述 table 中的重复项:
1) 如果 ID
重复,删除带有 Status
Closed
的那个。例如条目 10
和 Closed
应该被删除。
2) 如果 ID
重复且 Status
也相同,则应删除所有重复条目。例如ID
7
和 Status
Open
的条目都应删除。
如何在单个删除查询中实现此目的?
感谢阅读!
我认为以下几乎是对您的要求的直接翻译:
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;