数据库表为timerecords,里面纪录了每天的员工刷卡的卡号:card_id和时间:sign_time,每个卡号都有多条纪录,现在需要根据每天的刷卡时间来纪录考勤情况,也就是只留下每天每个员工刷卡最早的一次和最晚的一次刷卡纪录,中间其他的纪录删除掉.请高手指教!!
------解决方案--------------------
- SQL code
delete a from 表 awhere exists(select 1 from 表 where id=a.id and time <>(select min(time) from 表 where id=a.id )and time <>(select max(time) from 表 where id=a.id ))
------解决方案--------------------
--显示为两条记录
- SQL code
select *from timerecords awhere sign_time=(select max(sign_time) from timerecords where card_id=a.card_id and datediff(d,sign_time,a.sign_time )=0)or sign_time=(select min(sign_time) from timerecords where card_id=a.card_id and datediff(d,sign_time,a.sign_time )=0)