删除重复值并使用mysql存储最旧的日期值

时间:2017-06-04 13:15:43

标签: mysql sql

如何删除下表中的记录:

以便结果如下enter image description here

enter image description here。stack.imgur.com/BE87A.jpg

1 个答案:

答案 0 :(得分:0)

这仅保留记录,each employee of each day的时钟时间最短。

其他记录将被删除(只是为了澄清,您需要实际删除行,而不仅仅是在SELECT过滤)。

因此,如果您需要实际删除,则可以使用此查询:

delete your_table from your_table
inner join (
    select empid, `date`, min(clockintime) as minclockintime
    from your_table
    group by  empid, `date`
) sub
on your_table.empid = sub.empid and your_table.`date` = sub.`date` and your_table.clockintime > sub.minclockintime

嗯,子查询获得每个员工每个日期的最低/最低时间。

然后从表中删除所有行,当employee和date与子查询匹配时,但clockintime高于子查询的最小时间。

这意味着对于每个员工和每天,只有最短/最小时钟时间的行  剩下的,另一行被删除。

这很简单,只需要实现子查询结果,然后考虑on子句,就是这样。