一. distinct
id name age height
10 xiaogang 23 181
11 xiaoli 31 176
12 xiaohei 22 152
13 xiaogang 26 172
14 xiaoming 31 176
查询语句:select distinct name from userinfo
(1)如结果:
name
xiaogang
xiaohei
xiaoli
xiaoming
如想得到id的值
select distinct name,id from userinfo
(2)结果如下:
name id
xiaogang 10
xiaoli 11
xiaohei 12
xiaogang 13
xiaoming 14
此时distinct同时作用了两个字段,即必须得id与name都相同的才会被排除
二. group by
select name from userinfo groub by name
运行sql的结果如上面distinct中的结果
name
xiaogang
xiaohei
xiaoli
xiaoming
select name,id from userinfo groub by name ,id
运行sql的结果如上面distinct中的结果
name id
xiaogang 10
xiaoli 11
xiaohei 12
xiaogang 13
xiaoming 14
三. row_number() over
Row_Number 函数给数据库表的记录进行标号,在使用的时候后面会跟over 子句,而over 子句主要用来对表中的记录进行分组和排序的,语法如下:
ROW_NUMBER() OVER(PARTITION BY COLUMN1 ORDER BY COLUMN2)
1、Partition BY 用来分组
2、Order by 用来排序
接下来用 row_number() over 进行去重。首先用name 进行分组,id进行排序。
具体SQL 语句如下
SELECT * FROM (
select *,ROW_NUMBER() over(partition by name order by id desc) AS rn from userinfo ) AS u WHERE u.rn=1
结果如下
id name age height rn
13 xiaogang 26 172 1
12 xiaohei 22 152 1
11 xiaoli 31 176 1
14 xiaoming 31 176 1
今天的文章
查询表中重复数据语句_row是啥分享到此就结束了,感谢您的阅读。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
如需转载请保留出处:https://bianchenghao.cn/81314.html