加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

sql – 从表中的重复记录中获取最新ID

发布时间:2020-12-12 08:26:08 所属栏目:MsSql教程 来源:网络整理
导读:所以我有两个表,一个是RAWtable,另一个是MAINtable,我必须得到最新的groupID 存在多个记录(比较相同的名称,代码).例如,我在RAWtable上有这个: id groupid name code1 G09161405 Name1 Code12 G09161406 Name1 Code1 这两个记录应该被视为一个,并且只应返回此
所以我有两个表,一个是RAWtable,另一个是MAINtable,我必须得到最新的groupID
存在多个记录(比较相同的名称,代码).例如,我在RAWtable上有这个:
id  groupid     name        code
1   G09161405   Name1       Code1
2   G09161406   Name1       Code1

这两个记录应该被视为一个,并且只应返回此值:

id  groupid     name        code
2   G09161406   Name1       Code1

此行是shiuld在主表中插入的唯一行.提供返回最新的GroupID(groupid是日期和时间的组合)

我试过这个,但它不起作用:

SELECT MAST.ID,MAST.code,MAST.name FROM RAWtable AS MAST INNER JOIN 
(SELECT code,name,grouid,id FROM RAWtable AS DUPT GROUP BY code,groupid,id HAVING COUNT(*) >= 2) DUPT
 ON  DUPT.code =MAST.code and DUPT.name =MAST.name where dupt.groupid >mast.groupid

我怎样才能做到这一点?非常感谢.

解决方法

select R.id,R.groupid,R.name,R.code
from (select id,code,row_number() over(partition by name,code order by groupid desc) as rn
      from RawTable       
     ) as R
where R.rn = 1

或者如果你没有row_number()

select R1.id,R1.groupid,R1.name,R1.code
from RawTable as R1
  inner join (  
              select name,max(groupid) as groupid
              from RawTable
              group by name,code
             ) as R2
    on R1.name = R2.name and
       R1.code = R2.code and
       R1.groupid = R2.groupid

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读