【发布时间】:2021-10-01 12:45:47
【问题描述】:
【问题讨论】:
【问题讨论】:
此查询每行仅返回一个结果。
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 约束,不要让这种情况首先发生。
【讨论】: