如何删除其他列相等的所有但最近的行

时间:2015-08-14 00:18:37

标签: mysql sql database

我有一个MySQL表,摘录在这里:

http://pastebin.com/SdYJbzgk

我需要为assoc_case,document和participant是相同的每一行保留最新的行。例如,我只想将第136行保留在133-136行之外。

我正在为此工作,但似乎无法根据我的需要进行调整:

SELECT
    id,
    assoc_case,
    participant,
    document,
    MAX(created)
FROM
    `table`
GROUP BY
    created,
    assoc_case,
    participant,
    document

1 个答案:

答案 0 :(得分:1)

在MySQL中,您可以使用join

执行此操作
delete t
    from table t join
         (select assoc_case, participant, document, max(created) as maxc
          from table
          group by assoc_case, participant, document
         ) tt
         on t.assoc_case = tt.assoc_case and t.participant = tt.participant and
            t.document = tt.document
    where t.created < tt.maxc;