加入收藏 | 设为首页 | 会员中心 | 我要投稿 核心网 (https://www.hxwgxz.com/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长百科 > 正文

oracle – 如何查找具有相同(某些x值)值的列重复多次?需要返回

发布时间:2021-05-16 14:35:59 所属栏目:站长百科 来源:网络整理
导读:有一个名为联系人的表,其中包含列id,名称,地址,ph_no等. 我需要查找具有相同名称的行,如果行数大于1,则显示这些行. 例如: 表:联系人 id--------name--------address---------ph_no--------111 apple U.K 99*******112 banana U.S 99*******123 grape INDIA

有一个名为联系人的表,其中包含列id,名称,地址,ph_no等.
我需要查找具有相同名称的行,如果行数大于1,则显示这些行.

例如:
表:联系人

id--------name--------address---------ph_no--------
111       apple       U.K             99*******
112       banana      U.S             99*******
123       grape       INDIA           99*******
143       orange      S.AFRICA        99*******
152       grape       KENYA           99*******

对于上面的表,我需要获得具有相同列名数据的行,如下所示:

id--------name--------address---------ph_no--------
123       grape       INDIA           99*******
152       grape       KENYA           99*******

我需要根据我给出的名称来获取行,如下面的示例语法:

select * from contacts where name='grape' and it's count(*) >1 return those rows.

如何实现上述问题的解决方案.

正如@ vc74所暗示的那样,分析函数在这里工作得更好;特别是如果您的数据有任何数量.
select id,name,address,ph_no ...
  from ( select c.*,count(name) over ( partition by name ) as name_ct
           from contacts c )
 where name_ct > 1
       ;

编辑

限制特定名称表联系人应该在名称上有一个索引,查询将如下所示:

select id,count(name) over ( partition by name ) as name_ct
           from contacts c
          where name = 'grape' )
 where name_ct > 1
       ;

(编辑:核心网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读