T-SQL技术收集――删除重复数据(二)

2014-11-24 14:09:28 · 作者: · 浏览: 1
重复数据,也要保证剩下的是最新的数据(日期最大),此时可以借助索引,使用索引排序,然后把日期最小的那些删掉,只保留日期最大的那一笔。
--建立复合索引,利用索引将数据以编号和日期升序排序
CREATE INDEX IDX_DT ON MyT([sid],sdt ASC)
GO
--修改删除语句,搭配with index查询提示
WHILE 1=1
BEGIN
DELETE TOP(1) FROM MyT
WHERE [sid] IN
(
SELECT [sid] FROM MyT WITH (INDEX(idx_dt))
GROUP BY [sid],sname
HAVING COUNT(1) >1
) www.2cto.com
IF @@ROWCOUNT=0
BREAK
END
查询结果:
SELECT * FROM MyT


注意:
为了向后兼容,括号在 SELECT 语句中是可选的。
我们建议您始终对 SELECT 语句中的 TOP 使用括号,这样,就可以与在 INSERT、UPDATE、MERGE 和 DELETE 语句中需要使用括号保持一致(在这种情况下括号是必需的)。
(出自SQL SERVER 2012联机丛书)
作者 黄钊吉