如何在MySQL中基于唯一递增ID生成YYYY-XXXX格式pID并更新表
MySQL表pID字段批量更新方案
需求说明
现有一张MySQL表,包含唯一递增的ID字段和空的pID字段,初始数据如下:
| ID | pID |
|---|---|
| 1 | |
| 10 | |
| 100 | |
| 1000 |
需要将pID字段更新为YYYY-XXXX格式的字符串(其中YYYY为指定年份,示例用2022;XXXX为ID补零至4位的结果),期望输出如下:
| ID | pID |
|---|---|
| 1 | 2022-0001 |
| 10 | 2022-0010 |
| 100 | 2022-0100 |
| 1000 | 2022-1000 |
实现方案
使用MySQL的字符串拼接与补零函数完成批量更新,执行以下SQL语句即可:
UPDATE 你的表名 SET pID = CONCAT('2022-', LPAD(ID, 4, '0'));
关键函数说明
LPAD(ID, 4, '0'):将ID数值左侧补零,强制固定为4位长度。例如ID=1会转为0001,ID=10转为0010。CONCAT('2022-', ...):将指定年份字符串与补零后的ID拼接成目标格式的pID值。
注意事项
- 执行更新前建议先验证结果,避免误操作:
SELECT ID, CONCAT('2022-', LPAD(ID, 4, '0')) AS pID FROM 你的表名;
- 若需使用当前年份,可替换固定值为
YEAR(NOW()):
UPDATE 你的表名 SET pID = CONCAT(YEAR(NOW()), '-', LPAD(ID, 4, '0'));
内容的提问来源于stack exchange,提问作者George A. Custer
相关产品推荐
相关产品推荐

