以下查询在窗口函数和公用表表达式中包含带ROW_NUMBER()
的SQL:
WITH numbered AS (
SELECT ROW_NUMBER() OVER (
PARTITION BY master_id, Report_id
ORDER BY master_id, Report_id
) AS _dupe_num
FROM #tradePositionFilterInfo
WHERE 1=1
)
DELETE FROM numbered
WHERE _dupe_num > 1
如何将其转换为在MySQL中运行?
答案 0 :(得分:1)
使用mysql的多表删除语法:
delete a
from #tradePositionFilterInf a, #tradePositionFilterInf b
where a.master_id = b.master_id
and a.Report_id = b.Report_id
and a.id > b.id
最后一行是关键。我选择了id
列来打破关系,假设会有这样一个列。如果没有,请使用timestamp
或类似内容。如果没有基于时间的列,请使用任何不同的列。如果所有列都相同,则您需要进行清洗。