0

我的桌子看起来像:

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
4

1 回答 1

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
于 2013-03-24T14:29:38.723 回答