MySQL 替换某一字段中的字符

需求:直接使用MySQL语句 更新 数据库中 字段 的值

UPDATE `config`
SET `value` = REPLACE (`value`, '"pn",', '')
WHERE
  id IN (
      SELECT id FROM `sys_config` WHERE `value` LIKE '%pn%dwgno%' AND `key` NOT LIKE '%List%'
  );

该sql语句执行报错:

  1093 - Table 'config' is specified twice, both as a target for 'UPDATE' and as a separate source for data

 即

  MySQL中不允许先select出同一表中的某些值,再update这个表(在同一语句中)

参考 https://blog.csdn.net/Rookie_CEO/article/details/48912873, 做如下修改

修改1: 使用inner join

update `config` as c
INNER JOIN (
    select id as tempID from `config` where `value` like '%pn%dwgno%' and `key` not like '%List%'
) tempc on tempc.tempID=c.id
set c.`value` = REPLACE(c.`value`, '"pn",', '')

修改2:多加个嵌套

UPDATE `config`
SET `value` = REPLACE (`value`, '"pn",', '')
WHERE
    id IN (
        SELECT id FROM
            (
                SELECT id FROM `config` WHERE `value` LIKE '%pn%dwgno%' AND `key` NOT LIKE '%List%'
            ) tempC
    )

经测, 执行成功

猜你喜欢

转载自www.cnblogs.com/muyibg/p/9336762.html
今日推荐