当前位置: 首页 > 面试题库 >

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

方鸿振
2023-03-14
问题内容

我在表中有一些数据,看起来大致如下:

table stockData
(
tickId int not null,
timestamp datetime not null,
price decimal(18,5) not null
)

tickId和timestamp都不是唯一的,但是tickId和timestamp的组合应该是唯一的。

我的表中有一些重复的数据,并且我试图将其删除。但是,我得出的结论是,给定数据的信息不足,无法区分另一行,基本上没有办法删除重复的行之一。我的猜测是,我将需要引入某种身份列,这将有助于我从另一行中识别出一行。

这是正确的吗,还是有某种神奇的方法可以删除一个重复查询中的一个但不是全部重复数据?

编辑 编辑以阐明tickId和timestamp组合应该是唯一的,但这不是因为重复的数据。


问题答案:

这是一个查询,它将删除重复项,并在每个唯一行中仅保留一个副本。它将与SQL Server 2005或更高版本一起使用:

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 > 1


 类似资料:
  • 问题内容: 如何删除Postgres 9表中的重复行,行在每个字段上都是完全重复的,并且没有单个字段可用作唯一键,所以我不能只使用列并使用语句。 我正在寻找一个SQL语句,而不是需要我创建临时表并将记录插入其中的解决方案。我知道该怎么做,但是需要更多工作来适应我的自动化流程。 表定义: 样本数据: 问题答案: 如果您有能力重写整个表,则这可能是最简单的方法: 如果您需要专门针对重复的记录,则可以使

  • 我是一个初学者与R.我有一个tibbledata.frame:这是一个基因列表,包含企业ID、基因符号、基因描述和ENSG_ID。我想删除与唯一的ENSG ID相关的基因重复。例如,在我的数据框中发现AKRC1是重复的,有2个ENSG标识,其中一个与基因AKRC2相同。 初始文件 我试图删除重复的,但问题是我保留了AKRC1 #确定非重复基因的指数

  • 问题内容: 我在存储的过程中有一个字符串,类似于或 从上面的字符串中,我必须从中删除多个逗号,它必须看起来像 或仅在 then时 。我必须仅使用Sql Server函数。我正在使用Sql Server 2008和.Net 3.5 提前致谢。 问题答案: 该选项适用于仅使用逗号或最多398个连续逗号的字符串。 如果需要更多,在顶部添加额外的2的幂,或者如果需要较少,则从顶部删除2的幂。每个阶段的注释

  • 问题内容: 我相信在A,B,C,D的两个表字段之间插入了唯一索引,以防止重复。但是我以某种方式简单地对它们做了一个普通索引。因此插入了重复项。它是2000万个记录表。 如果我将现有索引从普通索引更改为唯一索引,或者只是为A,B,C,D添加新的唯一索引,由于存在唯一记录,重复项将被删除还是添加失败?我将对其进行测试,但它已达到3000万条记录,并且我既不希望将表弄乱或复制它。 问题答案: 如果表中有

  • 唯一标识符 guid(length = 32, firstU = true, radix = 62) 该函数可以生产一个全局唯一、随机的guid,默认首字母为u,可以用于当做元素的id或者class名等需要唯一,随机字符串的地方,因为id或者class不能以数字开头。 length <Number | null> guid的长度,默认为32,如果取值null,则按rfc4122标准生成对应格式的随

  • 问题内容: 我需要从下面给出的表中获取每个重复记录集的第一行。我需要在视图中使用此查询 请不要使用临时表,因为我已经通过添加标识列和最小函数以及分组依据来完成了。我需要没有临时表或表变量的解决方案 这只是示例数据。原始表中有1000条记录,我只需要前1000条的结果,因此不能使用 不同的 我正在使用SQL Server 2005 谢谢。 问题答案: 答案具体取决于您所说的“前1000个不同”记录的