【问题标题】:I want to delete duplicate rows from my database table我想从我的数据库表中删除重复的行
【发布时间】:2020-09-04 06:03:56
【问题描述】:

我浏览了有关此主题的一些答案,但没有一个在我的工作台上执行。 我的表中有重复的行,我想删除所有只保留其中一个的行。首先,我按 Count 函数对它们进行分组,然后尝试删除它们,但它不起作用。 我尝试从网站上的旧问题运行 CTE 查询:

 WITH ReferenceDP AS (
  SELECT[ReferenceId1], 
     row_number() OVER(PARTITION BY ReferenceId1 ORDER BY ReferenceId1) AS [rn]
  FROM TABLE
)
DELETE ReferenceDP WHERE [rn] > 1

但它没有工作。 我附上了我的桌子的图像。 有人可以帮我查询。 谢谢你。 DuplicateRowCount

【问题讨论】:

  • 你真的使用 MySQL 而不是 SQL Server?
  • 创建新表有时会更快,只保留您希望保留的行,然后删除旧表,然后重命名并重新索引新表。

标签: mysql sql-delete


【解决方案1】:

您可以尝试这样做。它基本上删除重复的行并保留最高的ReferenceId

 DELETE t1 FROM ast_fx_all_mst t1
 INNER JOIN ast_fx_all_mst  t2 
 WHERE 
    t1.ReferenceId < t2.ReferenceId AND 
    t1.TownAreaLocality = t2.TownAreaLocality AND
    t1.ContactName = t2.ContactName

【讨论】:

  • @SupportOfficer2 希望这是不言而喻的,但在尝试这样的事情之前,请务必备份您的数据。
【解决方案2】:

您可以使用删除连接查询并引用您的表两次。

DELETE t1 FROM ast_fx_all_mst t1
INNER JOIN ast_fx_all_mst t2 
WHERE 
    t1.ReferenceId < t2.ReferenceId AND t1.ContactName = t2.ContactName;

此链接可能会有所帮助:https://www.mysqltutorial.org/mysql-delete-join/

【讨论】:

  • 重复答案
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-04-03
  • 1970-01-01
  • 2011-12-27
  • 2018-09-10
  • 2012-01-01
  • 1970-01-01
相关资源
最近更新 更多