我试图用Duplicate find查询更新一个表,我的表是由60k +记录组成的,在excel上做这个有点复杂,我的表看起来像这样
Serial_NO .......确定重复
1 .......................好记录
2 .......................好记录
3 .......................好记录
1 .......................复制
这个想法只是通过检查整个" Serial_NO"来更新表中的最后一个或更近的重复条目。列和他们添加了“好记录”#39;或者'复制'在列"确定重复"。
提前感谢您的帮助!
答案 0 :(得分:0)
这假设桌子上有一个“id”字段,如评论中所示:
update tbl x
set x.[Determine Duplicate] = 'Good Record'
where x.id = (select min(y.id) from tbl y where y.[Serial_NO] = x.[Serial_NO]);
update tbl x
set x.[Determine Duplicate] = 'Duplicate'
where x.id > (select min(y.id) from tbl y where y.[Serial_NO] = x.[Serial_NO]);
答案 1 :(得分:0)
一种方法是使用ROW_NUMBER:
WITH t AS (
SELECT
ROW_NUMBER() OVER (PARTITION BY Serial_NO ORDER BY Serial_NO) AS seq
,DetermineDuplicate
FROM dbo.YourTable
)
UPDATE t
SET DetermineDuplicate = CASE WHEN seq = 1 THEN 'Good Record' ELSE 'Duplicate' END;
答案 2 :(得分:0)
在考虑给出评论后,我认为以下答案符合您的要求。
UPDATE tbl
SET tbl.[Determine Duplicate] = tb.[Determine Duplicate]
FROM tb_src tbl
INNER JOIN
(
SELECT t1.[Serial_NO],
COALESCE(t2.isduplicate,'Good Record') AS [Determine Duplicate]
FROM
(
SELECT DISTINCT t.[Serial_NO]
FROM tb_src t
) t1
LEFT OUTER JOIN tb_src t2
ON t1.[sno] = t2.sno AND t2.isduplicate = 'Duplicate'
) tb
ON tb.[Serial_NO] = tbl.[Serial_NO]
使用上面的内容,您可以使用单个查询。
请注意:tb_src
是您提供的表格。