我想做一个程序,更新出生日期的基础上,个人身份证号码和一切工作良好,除了一件事。pid只取一次,因此所有200条记录的结果相同。我该怎么改变这个?
例如:第一个值的pid是30052766293,所以出生日期=1930-05-27,但是对于左边的pid结果(日期)是相同的
CREATE PROCEDURE proc()
BEGIN
DECLARE s INT DEFAULT 0;
abc:LOOP
UPDATE people
SET birth_date = (SELECT str_to_date(CONCAT('19',substring(PID,1,2),
substring(PID,3,2),
substring(PID,5,2)
)
, '%Y %m %d') FROM workers LIMIT 1);
SET s = s+1;
IF s>=200
THEN LEAVE abc;
END IF ;
END LOOP;
END $$
编辑:people和worker是独立的表,它们具有相同的列pid
1条答案
按热度按时间wydwbb8l1#
因为你已经有了
PID
你的价值people
表,您只需更改UPDATE
使用这个值。请注意,由于要更改表中的所有值,甚至不需要存储过程,因此可以直接运行此查询:请注意,您可以进一步简化为: