一段关于排序后取得第一条记录的SQL文

本文介绍如何在数据库中去除具有相同 name、addr 和 tel 的重复记录,并按 no 字段进行排序,最终只保留每组唯一记录的第一条。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下在有下边一段的DB记录

no   name                    addr                      tel                  back
1     kobe                  shenyang               6666                aa
2     kobe                  shenyang               6666                bb
3     kobe                  shenyang               6666                cc
4     jordan                dalian                     7777                ffff
5     jordan                dalian                     7777                asdfas
6     jordan                dalian                     7777                asdf
7     Yaom                  china                      11                    pp
8     Yaom                  china                      11                    asdf
9     Yaom                  china                      11                    oo


如果按照 要求的话  当 name、addr 、 tel 三个字段的数据相同取第一条记录这个要求的话
我最后应该得到的数据就是
1     kobe                  shenyang               6666                aa
4     jordan                dalian                     7777                ffff
7     Yaom                  china                      11                    pp


SQL> select no, name, addr, tel, back
  2    from (select no,
  3                 name,
  4                 addr,
  5                 tel,
  6                 back,
  7                 row_number() over(partition by name, addr, tel order by no) rn
  8            from nba)
  9   where rn < 2 order by no;


参考链接:http://www.itpub.net/thread-926220-1-1.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值