You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL将product表name列值替换空格后复制到slug列失败如何解决?

问题根因
  • 你误用了INSERT语句:INSERT的作用是向数据表新增全新的行,而非修改现有行的字段值。
  • 你执行的语句实际效果是:给product表新增了一批仅填充了slug字段、其余字段(包括原有的name)全部为空的无效行,原有行的slug字段从未被修改,所以看起来还是空的。语句没有报错是因为SQL语法本身合法,只是业务逻辑不符合你的需求。
正确解决方案

你需要使用UPDATE语句更新已有行的slug字段:

UPDATE product
SET slug = REPLACE(name, ' ', '-');

可选前置验证步骤

如果担心全表更新出错,可以先执行查询验证替换逻辑是否符合预期:

SELECT name, REPLACE(name, ' ', '-') AS calculated_slug 
FROM product 
LIMIT 10;

确认替换结果正确后再执行UPDATE操作即可。

垃圾数据清理(可选)

之前执行的INSERT语句已经插入了一批无效的空行,如果需要清理,可执行以下语句(前提是原表name字段为非空约束,新增行的name字段为空):

DELETE FROM product WHERE name IS NULL;

内容的提问来源于stack exchange,提问作者Thomas Britsom

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.04 23:57:04