这可能是一个重复的问题,但我无法找到任何解决方案。我有这种数据表..
Name In_time out_time
John NULL 9/1/2014 17:00
John NULL 9/2/2014 11:18
John NULL 9/2/2014 12:22
John NULL 9/2/2014 13:22
John NULL 9/3/2014 13:00
John NULL 9/3/2014 17:13
John NULL 9/3/2014 18:13
John NULL 9/3/2014 19:13
我的问题是我如何删除这些重复数据.row是唯一的但在out_time列中的日期相同(没有时间)。我需要永久删除这些重复项,只考虑日期而不是时间。输出应该是这样的。
Name In_time out_time
John NULL 9/1/2014 17:00
John NULL 9/2/2014 11:18
John NULL 9/3/2014 13:00
答案 0 :(得分:2)
将群组对帐单更改为年,月和日
SELECT name,
in_time,
min(out_time)
FROM your_table
GROUP BY name,
DATE_FORMAT(in_time, "%Y-%m-%d");
要删除原始表格中的行,您必须执行2个步骤 首先添加一个虚拟字段thar自动包含日期
ALTER TABLE your_table ADD vdate DATE AS
( DATE_FORMAT(out_time, "%Y-%m-%d") ) PERSISTENT;
然后使用IGNORE创建一个新的唯一索引。
ALTER IGNORE TABLE your_table ADD UNIQUE INDEX idx2 (name,vdate);
直接删除重复