sqlserver查询去掉重复数据的实现
程序员文章站
2022-06-28 12:38:25
说明:只要数据表“列名”数据相同,则说明是两条重复的数据(id为数据表的主键自动增长)。推荐使用方法一-- 方法一select * from 表名 a where not exists(select...
说明:
只要数据表“列名”数据相同,则说明是两条重复的数据(id为数据表的主键自动增长)。
推荐使用方法一
-- 方法一 select * from 表名 a where not exists(select 1 from 表名 where 列名=a.列名 and id<a.id) -- 方法二 select a.* from 表名 a inner join (select min(id) id,列名 from 表名 group by 列名) b on a.列名=b.列名 and a.id=b.id -- 方法三 select * from 表名 a where id=(select min(id) from 表名 where 列名=a.列名)
补充:sql server 查询去重 partition by
rownumber() over(partition by col1 order by col2)
去重的方法,很不错,在此记录下:
row_number() over ( partition by col1 order by col2)
表示根据col1分组,在分组内部根据 col2排序,而此函数计算的值就表示每组内部排序后的顺序编号(组内连续的唯一的).
直接查询,中间很多相同的,但我只想取createdate时间最大的一条
select fromid,subunstall,kouchu,creatdate,syncdate,relate_key from boxcount_froms_open
使用
partition by fromid order by creatdate desc
根据中的 fromid分组,根据creatdate组内排序
where rn= 1;取第一条数据 select * from (select fromid,subunstall,kouchu,creatdate,syncdate,relate_key,row_number() over( partition by fromid order by creatdate desc)rn from boxcount_froms_open ) t where rn= 1;
以上为个人经验,希望能给大家一个参考,也希望大家多多支持。如有错误或未考虑完全的地方,望不吝赐教。