答案 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
子句,就是这样。