sqlsever运行结果不重复

sqlsever运行结果不重复

问:SQLServer 筛选出时间最新的且不重复的数据
  1. 答:不好意思,我刚刚的语句忘了加上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)
  2. 答: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
    你试试这个
  3. 答: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条件的好几个时间
  4. 答:distinct convert()
问:sqlserver 去掉重复记录
  1. 答:首先设定表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)
  2. 答:distinct已经去除重复的了。你的是不是只在查询显示的时候是重复的呀?
问:SQLServer去重复查询,不删除重复数据
  1. 答: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)
sqlsever运行结果不重复
下载Doc文档

猜你喜欢