1

Следующий запрос содержит SQL с ROW_NUMBER() над функцией кадрирования и общего табличным выражением:Как конвертировать 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'? Или временная метка? Что-то сломать галстук? – 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 или аналогичный. Если нет столбца, основанного на времени, используйте любой столбец, который отличается. Если все столбцы идентичны, вы будете закрыты.