如何在同一天删除重复的行?

时间:2013-03-24 14:26:41

标签: mysql sql phpmyadmin sql-delete

我的表格如下:

id      name        value       date
1       John        25      2013-03-23 16:42:35
2       John        25      2013-03-23 13:52:24
3       John        26      2013-03-22 03:12:43
4       Gabriel     18      2013-03-23 10:21:07
5       Rick        32      2013-03-21 04:37:29

如何在同一天删除具有相同name和时间戳date的行?例如,上表应为:

id      name        value       date
1       John        25      2013-03-23 16:42:35
3       John        26      2013-03-22 03:12:43
4       Gabriel     18      2013-03-23 10:21:07
5       Rick        32      2013-03-21 04:37:29

1 个答案:

答案 0 :(得分:1)

有很多方法可以做到这一点。一种方法是使用子查询,每天获取一个名称记录,然后将子查询的结果加回到表中。然后将过滤和删除不匹配的行。

DELETE  a
FROM    tableName a
        LEFT JOIN
        (
            SELECT  name, date(date) dateOnly, MIN(ID) min_ID
            FROM    tableName
            GROUP   BY name, date(date)
        ) b ON  a.name = b.name AND
                Date(a.date) = b.dateonly AND
                a.ID = b.min_ID
WHERE   b.name IS NULL