sql - 删除/忽略表中的重复记录并仅保留最早的记录

标签 sql sql-server database

我需要一个 SQL 查询来删除下图中的重复项。假设表的名称是“Opens”。 enter image description here

如您所见,有很多记录在 Id、SendQueueId、SubscriberId 和 Email 中几乎相同。唯一不同的是它们的 DateTime。我只需要从每个 Id 中选择一个,这样我的 Id 将是唯一的,并且只保留最早的一个。

最佳答案

使用公用表表达式通过 ROW_NUMBER 函数识别重复项,并删除您指定为“第一个”的以外的所有匹配项。

;with cte as (
  select *, 
    row_number() over (
      partition by Id, SendQueueId, SubscriberId, Email, WP_CampaignId
      order by DateTime
    ) as RN
  from
    Opens
)

delete
  cte
where
  RN > 1

关于sql - 删除/忽略表中的重复记录并仅保留最早的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18360956/

相关文章:

php - 如何绘制折线区域,即服务覆盖区域,并使用 Google Maps API 和 PHP 检查访问者的地址是否位于该区域内?

mysql - MySQL 的语法图

sql-server - 关键字 WHERE 附近的语法不正确

sql - 交叉应用表值函数

android - 使用 zxing 条码扫描器创建产品数据库将数据添加到数据库问题

sql - 根据列值只为 MySQL 选择一次记录

mysql - 防止删除数据库中的特定行

c# - 读取数组或列表中的 SQL Server 列

database - DynamoDB 主键和索引表设计

mysql - 数据库中的唯一 ID