如何去掉部分字段重复数据?
2014-10-31 13:21
651 查看
需求:某个表的数据,希望得到手机号去重复之后的记录,重复取时间较早的数据……
--0. 定义表变量及初始数据 set nocount on declare @t table( mobile varchar(11), loadTime datetime ) --1 单条 --2,3 两条,号码和时间完全相同 --4,5 两条,号码同,时间不同 insert into @t (mobile, loadTime) values('13212345670','2014-04-05') insert into @t (mobile, loadTime) values('13212345671','2014-03-02') insert into @t (mobile, loadTime) values('13212345671','2014-03-02') insert into @t (mobile, loadTime) values('13212345672','2014-02-03') insert into @t (mobile, loadTime) values('13212345672','2014-03-04') --1. row_number 同一号码,无论时间是否相同 rid都不会重复 select row_number() over(partition by mobile order by loadtime) as rid, * from @t ORDER BY mobile,loadTime /* rid mobile loadTime -------------------- ----------- ----------------------- 1 13212345670 2014-04-05 00:00:00.000 1 13212345671 2014-03-02 00:00:00.000 2 13212345671 2014-03-02 00:00:00.000 1 13212345672 2014-02-03 00:00:00.000 2 13212345672 2014-03-04 00:00:00.000 */ --2. rank 同一号码, 同一时间 rid会重复; 同一号码 不同时间 rid 不会重复 select rank() over(partition by mobile order by loadtime) as rid, * from @t ORDER BY mobile,loadTime /* rid mobile loadTime -------------------- ----------- ----------------------- 1 13212345670 2014-04-05 00:00:00.000 1 13212345671 2014-03-02 00:00:00.000 1 13212345671 2014-03-02 00:00:00.000 1 13212345672 2014-02-03 00:00:00.000 2 13212345672 2014-03-04 00:00:00.000 */ --3. 只能选择 row_number 来去重复…… ;with t as ( select row_number() over(partition by mobile order by mobile,loadtime) as rid, * from @t ) select * from t where rid=1 ORDER BY mobile,loadTime /* rid mobile loadTime -------------------- ----------- ----------------------- 1 13212345670 2014-04-05 00:00:00.000 1 13212345671 2014-03-02 00:00:00.000 1 13212345672 2014-02-03 00:00:00.000 */
相关文章推荐
- 部分字段重复数据的删除
- 泛型中去掉指定字段重复的数据
- mysql通过sql语句如何批量去掉某一个表中某一个字段的下面的相同部分字符串
- Golang 页面模板之模板中如何插入数据,输出嵌套字段内容?以及神奇的减号“-”,如何去掉Go Template生成的标签换行符
- c# 如何中List<object>中去掉object对象中的重复列数据?
- 在Mysql和Oracle中如何删除字段中的重复数据
- 如何给下拉选赋值,去掉下拉的重复的数据
- hibernate使用createQuery(hql)语句仅查询部分字段,应如何获得数据
- Flask-SQLAlchemy获取一个字段里去掉重复的数据
- sql 删除部分字段重复数据
- 如何去掉一个文件中重复的数据行
- 字段查找如何去掉数据库重复记录并且只保留一条记录
- mysql如何判断指定字段数据不重复
- 泛型中去掉指定字段重复的数据
- linux下删除大数据文件中部分字段重复的行
- 按某一字段分组取最大(小)值所在行的数据,如何按字段删除重复记录
- 如何去掉list中的重复数据
- Bulk insert如何导入部分字段的数据
- Mysql 查询部分字段重复数据sql语句
- mysql 用sql 语句去掉某个字段重复值数据的方法