sqlserver - 如何大量修改关联数据并删除重复数据

查看:198
本文介绍了sqlserver - 如何大量修改关联数据并删除重复数据的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

问 题

现在库里有两张表,一张是信息表,一张是用户表。
信息表通过用户id计算的code进行关联。
也就是存在一个用户对应多个信息的情况。
大致可以这么描述:
信息表<id,内容,时间,用户code,>
用户表<id,用户code,用户信息>,
目前因为入库时数据的去重处理问题,导致了用户表大量的同一个用户id拥有了不同的用户code。(即同一个用户信息出现了多次,除了用户code和入库时间不一致以外,其他可以理解为完全一致)
我想要删除重复的用户,只保留一个最新的用户信息。
可是在对用户进行处理的时候,如何保证删除掉的那些用户code对应的信息表的code改成了保留的那个code。
量很大,求指教如何进行处理?
eg:

解决方案

WITH CTET AS (
SELECT *,ROW_NUMBER()OVER(PARTITION BY ID ORDER BY 入库时间) AS RN
FROM 用户表
)
UPDATE t2
SET 用户code = t3.用户code
FROM CTET AS t1

    INNER JOIN 信息表 AS t2 ON t1.用户code = t2.用户code
    INNER JOIN CTET AS t3 ON t3.ID = t1.ID
                             AND t3.RN = 1

WHERE t1.RN > 1;

这篇关于sqlserver - 如何大量修改关联数据并删除重复数据的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆