回答

收藏

删除没有唯一标识符的重复行

技术问答 技术问答 171 人阅读 | 0 人回复 | 2023-09-14

我在表中有一些数据,去大致如下:0 Z  F1 ~2 c3 d4 S
table stockData(tickId int not null,timestamp datetime not null,price decimal(18,5) not null)tickId和timestamp但是tickId和timestamp组合应该是唯一的。  X5 g; w6 h9 G9 J% s& O
我的表中有一些重复的数据,我试图删除它们。然而,我得出结论,给定数据的信息不足以区分另一行,基本上没有办法删除重复的行之一。我的猜测是,我需要引入一个身份列,这将帮助我从另一行识别一行。
( ^5 t4 Q2 |9 L; N2 h这是正确的,还是有一种神奇的方法可以删除重复查询中的一个,但不是所有的重复数据?
" j( ~( p+ [  `) G) y编辑    编辑澄清tickId和timestamp组合应该是唯一的,但这不是因为重复的数据。
& d; |# S1 r0 [' N% t                                                                7 A* Y, a/ u7 h" H9 x3 L
    解决方案:                                                               
$ T! D  f: b: ~, M# k: J0 D+ D                                                                这是一个查询,它将删除重复项,并在每一行中只保留一个副本。SQL Server 2005或更高版本一起使用:! y) f7 O" D# {) l. n
WITH Dups AS(  SELECT tickId,timestamp,price,   ROW_NUMBER() OVER(PARTITION BY tickid,timestamp ORDER BY (SELECT 0)) AS rn  FROM stockData)DELETE FROM Dups WHERE rn >
分享到:
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则