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
    )

經測, 執行成功


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM