如何批量更新MySQL表中Name字段,在名称与数字间添加空格?
批量更新MySQL表中Name字段格式问题
当前mytab表数据
| 2 | 123 | Name2 | | 7 | 444 | Name3 | | 16 | 555 | Name4 | | 17 | 443 | Name5 | | 18 | 129 | Name6 |
期望修改效果
需要将Name字段修改为名称与数字间加空格的形式,最终效果如下:
| 2 | 123 | Name 2 | | 7 | 444 | Name 3 | | 16 | 555 | Name 4 | | 17 | 443 | Name 5 | | 18 | 129 | Name 6 |
尝试过的错误操作
错误调用SPACE()函数的单个更新语句:
update mytab set Name = 'Name Space(1) 1' where name = 'Name1';结果生成错误值:
Name Space(1) 1,未正确执行SPACE()函数逻辑。子查询更新触发多行返回错误:
update mytab set name = (select CONCAT('Name', SPACE(1)) AS Name from mytab);报错信息:
ERROR 1242 (21000): Subquery returns more than 1 row添加LIMIT后触发唯一键重复冲突:
update mytab set name = (select CONCAT('Name', SPACE(1)) AS Name from mytab limit 1);报错信息:
ERROR 1062 (23000): Duplicate entry 'Name ' for key 'Name'
表结构信息
| mytab | CREATE TABLE `mytab` ( `ID` bigint(20) NOT NULL AUTO_INCREMENT, `CallerID` varchar(255) NOT NULL, `Name` varchar(255) NOT NULL, PRIMARY KEY (`ID`), UNIQUE KEY `CallerID` (`CallerID`), UNIQUE KEY `Name` (`Name`), UNIQUE KEY `unique_index` (`Name`,`CallerID`) ) ENGINE=InnoDB AUTO_INCREMENT=22 DEFAULT CHARSET=latin1 COLLATE=latin1_swedish_ci |
需求说明
目前临时解决办法是清空表、将值导出到文本修改后重新插入,现寻求正确的批量更新方法。
内容的提问来源于stack exchange,提问作者elbarna
相关产品推荐
相关产品推荐

