我的表格如下:
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
答案 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