暂无图片
如何使用更快的方法去重
我来答
分享
Switchblade
2023-08-19
如何使用更快的方法去重

我有考勤表和导入表。导入表如下

ID 约会时间
1001 2023-08-15 8:00:00
1002 2023-08-15 8:01:00
1001 2023-08-15 19:31:00
1002 2023-08-15 19:35:00

**我获取这些数据并使用Min(date_time)max(date_time)**将我的出勤表插入到出勤表、EMPID、TimeIN、TimeOUT 中,如下所示

EMPID 时间输入 暂停
1001 2023-08-15 8:00:00 2023-08-15 19:31:00
1002 2023-08-15 8:01:00 2023-08-15 19:35:00

但在中午,如果我导入数据,我的出勤表如下所示

EMPID 时间输入 暂停
1001 2023-08-16 8:21:00 2023-08-15 08:21:00
1001 2023-08-16 20:01:00 2023-08-15 20:01:00

我需要更新考勤表 TimeIN 8:21:00 和 TimeOUT 20:01:00 并删除第二行

我尝试使用下面的代码创建临时表(att_duplicate) INSERT INTO att_duplicate SELECT EMPID, min(TimeIN) as TimeIN, max(TimeOUT) as TimeOUT, SN from attendance GROUP by EMPID, date(TimeIN) HAVING COUNT(TimeIN)>1 ORDER BY EMPID, TimeIN;

然后我使用下面的代码更新出勤表与 att_duplicate 表的连接 UPDATE attendance att JOIN att_duplicate dup ON att.EMPID = dup.EMPID AND DATE(att.TimeIN)= date(dup.TimeIN) SET att.TimeOUT = dup.TimeOUT, att.TimeIN = dup.TimeIN

然后我使用下面的代码删除出勤表重复记录,但这需要很长时间… DELETE a1 FROM attendance a1 JOIN attendance a2 ON a1.EMPID = a2.EMPID AND a1.TimeIN = a2.TimeIN AND a1.SN > a2.SN;

请问这个方法是错误的吗,有没有更好更快的方法

我需要更好更快的方法

我来答
添加附件
收藏
分享
问题补充
2条回答
默认
最新
redgame
做临时表,把结果放进去,定时刷新
暂无图片 评论
暂无图片 有用 2
打赏 0
暂无图片
Thomas

从提问内容看,似乎是AI翻译过来的文章

暂无图片 评论
暂无图片 有用 0
打赏 0
回答交流
Markdown


请输入正文
提交
相关推荐
MySQL 查询,查询语句能发送多个吗?
回答 1
;号隔开就可以了。可以发送多个。
请问配置了主库 与 从库就进行数据同步,那么 主库的 binlog_format 如何设置?
回答 1
binlog的格式也有三种:STATEMENT语句模式,ROW行模式,MIXED混合模式当然选择ROW行模式,记录了完整的语句,可以恢复也可以跟踪一些问题。
Ubuntu mysql中文乱码修改完没效果
回答 2
请发一下建表语句showcreatetable<tablename>出来,另外,shell的环境变量也发一下,操作系统命令为env,解决乱码需要数据库表数据,数据库设置,客户端环境都一致才
mysql安装时选择server only显示no packages found,应当如何解决?
回答 1
已采纳
虽然我没有怎么在windows下用过。但是应该也是一步步点下去的。你这个可能是安装包有问题。你从官方下载msi的。试试。
MySQL中的IFNULL()有什么作用?
回答 1
已采纳
使用IFNULL()方法能使MySQL中的查询更加精确。IFNULL()方法会测试它的第一个参数,若不为NULL则返回该参数的值,否则返回第二个参数的值,类似于Oracle中的NVL函数。
MySQL如何在参数配置文件中保存账户和密码?
回答 2
已采纳
MySQL的参数配置文件里的参数是按对应的程序名进行分组的,组名放在[]中。如[mysqld]和[mysql]组分别对应mysqld服务和mysal客户端程序。[client]参数组对应所有的客户端程
mysql数据库latch争用?
回答 9
这个脚本是orawatch开源项目改的可以自己写 原来是Oracle的只是把连接方式和sql换一下
rman 备份归档日志倒 备机
回答 2
open之前你可以先alterdatabaserecovermanagedstandbydatabase;让它自己去拉日志恢复一下然后cancel再open
mysql触发器怎么做,屏蔽源数据?
回答 1
mysql没有Insteadof这句对原表不执行操作,只执行触发器的写法
MySQL 8 忘记密码,如何修改密码
回答 3
已采纳
在配置文件中打开 skipgranttables跳过数据库权限验证
问题信息
请登录之后查看
邀请回答
暂无人订阅该标签,敬请期待~~