现在库里有两张表,一张是信息表,一张是用户表。
信息表通过用户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
WHERE t1.RN > 1;