1

以下查询包含与ROW_NUMBER() SQL在窗口功能和公共表表达式:如何使用公用表表达式查询转换ROW_NUMBER到MySQL

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

'#tradePositionFilterInf'中是否有id列?还是时间戳?什么东西打破领带? – Bohemian

回答

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或类似的。如果没有基于时间的列,请使用不同的列。如果所有的列都是相同的,你就会被洗净。

相关问题