gpt4 book ai didi

sql - 如何从表中的所有列中选择所有重复行的所有出现?

转载 作者:行者123 更新时间:2023-12-04 14:25:40 25 4
gpt4 key购买 nike

例如:

select c1, c2
from mytable
group by c1, c2
having count(*) > 1;

每个副本仅提供 1 份副本。

最佳答案

使用窗口函数:

select t.*
from (select t.*, count(*) over (partition by c1, c2) as cnt
from mytable
) t
where cnt > 1;

请注意,即使当 c1 和/或 c2NULL 时,这仍然有效。

但是,如果您只关心 c1c2,那么在结果集中包含计数可能就足够了:

select c1, c2, count(*)
from mytable
group by c1, c2
having count(*) > 1;

Oracle 中另一个有趣的方法:

select t.*
from mytable t
where exists (select 1
from mytable t2
where t2.c1 = t.c1 and t2.c2 = t.c2 and t2.rowid <> t.rowid
);

但是,如果 c1c2NULL,则此方法失败,因此第一种方法更为通用。

关于sql - 如何从表中的所有列中选择所有重复行的所有出现?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45531390/

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