需求:直接使用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 )
經測, 執行成功