修剪MySQL表与组

时间:2017-11-14 23:03:25

标签: mysql group-by

我有一个如下表格,并希望删除pidcodetype重复的所有行,并保留最新updated日期的行。

e.g。

pid     code            type    updated
267985  9414202017604   R       2017-11-13 04:52:23 -- keep
267985  19414202017601  D       2017-11-13 04:52:23 -- keep
267985  19414202017601  D       2017-11-13 04:42:26 -- delete
267985  9414202017604   R       2017-11-13 04:42:26 -- delete
267986  19414202017601  D       2017-11-13 04:32:33 -- keep
...

我可以使用GROUP BY获取max(updated)但是如何将其包含在删除语句中?

请注意,updated不够精细,无法充当唯一的行标识符。

1 个答案:

答案 0 :(得分:1)

SQL Fiddle

MySQL 5.6架构设置

select *
from table1 d

查询1

| id |    pid |           code | type |              updated |    note |
|----|--------|----------------|------|----------------------|---------|
|  1 | 267985 |  9414202017604 |    R | 2017-11-13T04:52:23Z | -- keep |
|  2 | 267985 | 19414202017601 |    D | 2017-11-13T04:52:23Z | -- keep |
|  5 | 267986 | 19414202017601 |    D | 2017-11-13T04:32:33Z | -- keep |

<强> Results

{{1}}