BEGIN
DECLARE i INT DEFAULT 0;
DECLARE J INT DEFAULT 0;
DECLARE msg varchar(255) DEFAULT null;
DECLARE msg1 varchar(255) DEFAULT null;
DECLARE s VARCHAR(255) DEFAULT null;
set i = select em_DOJ
from employee_master
where MONTH(em_DOJ) = MONTH(NOW()) and DAY(em_DOJ) = DAY(NOW());
set j = (select TIMESTAMPDIFF(year,i,now()));
set msg1 = 'Congrats';
set msg = concat(msg1, j, 'Years Completed');
INSERT INTO time_line( tl_name, tl_dob, tl_message)
select em_first_name, em_DOJ, msg
from employee_master;
end
为什么我收到此代码的错误。我的目的是将数据从一个表传输到另一个表并同时计算年份。我收到了这一行的错误。
set i = select em_DOJ
from employee_master
where MONTH(em_DOJ) = MONTH(NOW()) and DAY(em_DOJ) = DAY(NOW());
感谢您的解决方案。
答案 0 :(得分:0)
你需要用大括号包装SELECT:
set i = (select em_DOJ
from employee_master
where MONTH(em_DOJ) = MONTH(NOW()) and DAY(em_DOJ) = DAY(NOW()));
此外,此选择可能会返回多个结果,从而导致错误。
答案 1 :(得分:0)
您在WHERE
查询中没有INSERT ... SELECT ...
子句,因此它会从employee_master
中选择所有行,并在{{1}中插入一行对于每个time_line
。
您不需要多个查询。您应该将它们全部合并为一个msg
,以便消息中的年数与该员工匹配。
SELECT