sqlsever运行结果不重复
2023-01-06阅读(781)
问:SQLServer 筛选出时间最新的且不重复的数据
- 答:不好意思,我刚刚的语句忘了加上distinct了。
select *
from a where 时间 in (
select distinct MIN(时间) from a group by 单据号)
如果数据库中左边的查询还有重复值,那样是不大可能的,因为那样的话就有两条同样的记录了。如果真的存在,你可以在前面增加一个去重复的词语:distinct。你可以执行这个语句看看:
select distinct * from trace_reports.dbo.package_code_recs10
where RecTime in (select distinct max(RecTime) from trace_reports.dbo.package_code_recs10 group by FK_Code) - 答:select * from
(select *, num=ROW_NUMBER()over(partition by FK_Code order by RecTime desc)
from trace_reports.dbo.package_code_recs10) T
where num=1
你试试这个 - 答:select * from trace_reports.dbo.package_code_recs10
inner join
(select max(RecTime) RecTime,FK_Code from trace_reports.dbo.package_code_recs10 group by FK_Code) aa
on
aa.RecTime = package_code_recs10.RecTime and aa.FK_Code = package_code_recs10.FK_Code
这样写才对,你那样写in里面是把最大的时间都取出来了,但是in这些时间就错了,可能同一个FK_Code满足in条件的好几个时间 - 答:distinct convert()
问:sqlserver 去掉重复记录
- 答:首先设定表tb_a 唯一关键字段 xh,以及要查询的重复字段 mc 则查询mc重复的sqlserver语句如下
select mc from tb_a where xh not in (select min(xh) xh from tb_a group by mc) - 答:distinct已经去除重复的了。你的是不是只在查询显示的时候是重复的呀?
问:SQLServer去重复查询,不删除重复数据
- 答:1、要有定位基准,也就是说,你的表必需要有一个不重复的键值,如果没有,请你给这个表加一个字段,将这个字段设为自增变量字段,建议为int类型,比如字段名可为“编码”。
2、查重复的数据:
select *from 表名 where 编码 in
(select 编码 from 表名 group by 编码 having count(1) >= 2)
3、删除所有有重复的记录:
delete from 表名 where
编码 in(select 编码 from 表名 group by 编码 having count(1) >= 2)
4、删去重复的,只留下重复记录中编码最大的一条:
delete from 表名 where
编码 in(select 编码 from 表名 group by 编码 having count(1) >= 2)
and 编码 not in (select max(编码)from 表名 group by 编码 having count(1) >=2)