gpt4 book ai didi

sql - 删除除部分行之外的所有行 - Oracle

转载 作者:行者123 更新时间:2023-12-03 18:28:00 26 4
gpt4 key购买 nike

我想从表中删除一组行。我可以决定需要删除哪些行。仅当行数大于 5(基于条件)时,我才会从表中删除行。

考虑这个样本数据

ID--Col1--Col2--
1 A X
2 A X
3 A X
4 A X
5 A X
6 A X
7 A X
8 A X
9 A X
10 A X
11 B X
12 B X
13 B X
14 B X
15 C X
16 C X
17 C X
18 D X
19 D X

我想删除 {*, A, X} 的 5 行,我需要保留其中的 5 行(无论是哪一个)。我不会删除 B、C 和 D,因为它们的数量少于 5。

喜欢
delete from tableA
--- I can decide on the rows to delete based on two conditions.
where col1 = someCondition
and col2 = someOtherCondition
and rownum > 5 --- This dint work. I checked.

我想也许我需要以编程方式。任何建议都非常感谢。

最佳答案

这将删除 col1 和 col2 的每个唯一组合的所有行,而不是按 rowid 排序的前五行

delete from my_table
where rowid in
(
select rowid
from
(
select rowid,
row_number() over (partition by col1, col2 order by rowid) rownumber
from my_table
)
where rownumber > 5
)
/

关于sql - 删除除部分行之外的所有行 - Oracle,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1808669/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com