Mysql 如何通过更改列值来创建与表中当前行对应的新行
我的桌子是Mysql 如何通过更改列值来创建与表中当前行对应的新行,mysql,sql,Mysql,Sql,我的桌子是 emp\u活动 id emp_id date time status ---|------|-------------|----------|--------- 1 | 1122 | 20-08-2019 | 09:30 AM | login 2 | 1123 | 20-08-2019 | 09:30 AM | login 5 | 1124 | 20-08-2019 | 09:30 AM | login 3 | 1125 | 20-08-
emp\u活动
id emp_id date time status
---|------|-------------|----------|---------
1 | 1122 | 20-08-2019 | 09:30 AM | login
2 | 1123 | 20-08-2019 | 09:30 AM | login
5 | 1124 | 20-08-2019 | 09:30 AM | login
3 | 1125 | 20-08-2019 | 09:30 AM | login
4 | 1126 | 20-08-2019 | 09:30 AM | login
6 | 1127 | 20-08-2019 | 09:30 AM | login
7 | 1128 | 20-08-2019 | 09:30 AM | login
8 | 1129 | 20-08-2019 | 09:30 AM | login
我想在同一天晚上11点在同一个表中插入每个员工注销行,如下所示
通缉表
emp_活动
id emp_id date time status
---|------|-------------|----------|---------
1 | 1122 | 20-08-2019 | 09:30 AM | login
2 | 1123 | 20-08-2019 | 09:30 AM | login
5 | 1124 | 20-08-2019 | 09:30 AM | login
3 | 1125 | 20-08-2019 | 09:30 AM | login
4 | 1126 | 20-08-2019 | 09:30 AM | login
6 | 1127 | 20-08-2019 | 09:30 AM | login
7 | 1128 | 20-08-2019 | 09:30 AM | login
8 | 1129 | 20-08-2019 | 09:30 AM | login
9 | 1122 | 20-08-2019 | 11:00 PM | logout
10 | 1123 | 20-08-2019 | 11:00 AM | logout
11 | 1124 | 20-08-2019 | 11:00 AM | logout
12 | 1125 | 20-08-2019 | 11:00 AM | logout
13 | 1126 | 20-08-2019 | 11:00 AM | logout
14 | 1127 | 20-08-2019 | 11:00 AM | logout
15 | 1128 | 20-08-2019 | 11:00 AM | logout
16 | 1129 | 20-08-2019 | 11:00 AM | logout
您可以尝试使用
插入到。。。选择
:
INSERT INTO emp_activity (emp_id, date, time, status)
SELECT emp_id, date, '11:00 PM', 'logout'
FROM emp_activity
WHERE status = 'login';
这个答案假设
id
列是自动递增的,并且在插入过程中通过省略它自动填充。我不知道您是否真的在time
列中存储了类似于09:30am
的内容。MySQL中11PM的时间文本为24小时时间23:00:00
。只需使用union all
,并在列中插入标量值:
select * from MyTable
union all
select id, emp_id, date, cast('11:00:00' as time), 'logout' from MyTable
如果ID列不是自动递增的,则可以使用此脚本
insert into emp_activity (id, emp_id, date, time, status)
select id + (select count(1) from emp_activity where status = 'login'), emp_id, date, '11:00 PM', 'logout'
from emp_activity
where status = 'login';
如何使用cron-job设置此查询我不理解您的评论的上下文。您是否希望从应用程序(如Java或C)执行此操作?还是直接从MySQL?在任何情况下,我建议打开一个新问题。我想在晚上11点在我的服务器上执行此查询。如果您有一个与您已问(并已回答)非常不同的后续问题,您应该打开一个新问题。