我对MySQL查询很陌生。我必须用从该行中的另外两个字段构造的日期更新数据库中的所有行,下面的更新代码只适用于一行,但我需要遍历所有行并进行更新。
UPDATE jobs SET job_date = CONCAT(job_year,"-",job_month,"-01") WHERE id = 2;我看过程序,但不知道如何让它开始工作。
DROP PROCEDURE IF EXISTS ROWPERROW;
DELIMITER ;;
CREATE PROCEDURE ROWPERROW()
BEGIN
DECLARE n INT DEFAULT 0;
DECLARE i INT DEFAULT 0;
SELECT COUNT(*) FROM jobs INTO n;
SET i=0;
WHILE i<n DO
UPDATE jobs SET job_date = CONCAT(job_year,"-",job_month,"-01");
SET i = i + 1;
END WHILE;
End;
;;发布于 2022-08-18 00:51:48
这适用于一行:
UPDATE jobs SET job_date = CONCAT(job_year,"-",job_month,"-01") WHERE id = 2;因为你让它更新
WHERE id = 2;如果去掉该WHERE子句,它将更新所有行。
你不需要做手术。
发布于 2022-08-18 03:17:36
如莱斯特所说,删除where子句where id = 2
在我的经验中,这种情况(基于年份和月份列创建varchar日期列)并不经常发生,因为大多数情况下,首先得到确切的时间,然后再从该时间得到年份和月份。
如果只能从数据源获取年份和月份数据,则应在插入表job_date 时存储列。
如果您可以先得到job_date列,我认为有几件事您应该考虑
t need to create year/month column if there is a job\_date column, if you want to extract the year / month value from mysql, you can use functions of mysql, like从xxx`中选择job_date、年份(Job_date)、月份(Job_state)。https://stackoverflow.com/questions/73396317
复制相似问题