我在mysql中有一个数据库,我有一个使用列名cedula VARCHAR(50)的主表,该列有字符,但我想用连续的数字更改它。我试过这个:
SET @a:=1;
UPDATE bdpiiad2.tpersona
SET cedula=(CONVERT(@a:=@a+1, CHAR(50)))
但我有两个问题,第一个没有变化,第二个我不确定是否更改其他表中有参考的其他ID。
答案 0 :(得分:1)
尝试使用此
SET @a:=1;
UPDATE bdpiiad2.tpersona
SET cedula=(CAST(@a:=@a+1 as CHAR));
更新您创建此类程序所需的全部内容
DELIMITER $$
USE `bdpiiad2`$$
DROP PROCEDURE IF EXISTS bdpiiad2.`up`$$
CREATE PROCEDURE `up`()
BEGIN
DECLARE max_cnt INT;
DECLARE cnt INT;
SET cnt=1;
UPDATE bdpiiad2.tpersona SET cedula='0';
SELECT COUNT(*) INTO max_cnt FROM bdpiiad2.tpersona;
WHILE cnt<=max_cnt DO
UPDATE bdpiiad2.tpersona
SET cedula=(CAST(cnt AS CHAR))
WHERE cedula='0' LIMIT 1;
SET cnt=cnt+1;
END WHILE;
END$$
DELIMITER ;
然后像这样调用它
CALL bdpiiad2.up();