【问题标题】:SQL query that deletes Duplicate Rows [duplicate]删除重复行的 SQL 查询 [重复]
【发布时间】:2021-10-01 12:45:47
【问题描述】:

Example

我需要弄清楚如何删除重复值(第 1 行和第 3 行是指相同的付款,但日期不同)。如何删除其中一行?

【问题讨论】:

标签: mysql sql


【解决方案1】:

此查询每行仅返回一个结果。

SELECT
 id,
 status,
 processed_amt,
 balance_before,
 balance_after,
 MAX(process_date)
FROM
 your_table
GROUP BY id, status, processed_at, balance_before, balance_after

任何聚合函数都可以。

--- 编辑 ---

或者你的意思是你真的想从你的表中删除行?

在这种情况下,您可以使用链接到 cmets 的示例中的方法。


WITH duplicates AS (
   SELECT 
       id, 
       ROW_NUMBER() OVER 
       (PARTITION BY id 
        ORDER BY process_date DESC) row_num 
    FROM your_table) 
DELETE FROM duplicates WHERE row_num, > 1;

但我强烈建议为您的 ID 列设置 UNIQUE 约束,不要让这种情况首先发生。

【讨论】:

    猜你喜欢
    • 2021-11-07
    • 2020-02-17
    • 2015-08-12
    • 1970-01-01
    • 2019-12-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-04-10
    相关资源
    最近更新 更多