MySql 复制一行并替换副本中的部分字段

MySql Duplicate a row and replace part of a field in the duplicate

我试图在 mysql 数据库中复制一行,同时在复制行的一个字段中替换字符串的一部分。

我已经知道如何:

  1. 复制一行

    INSERT INTO account_external_ids 
    SELECT * FROM account_external_ids 
    where external_id like '%gerrit:%';
    
  2. 替换字符串,但不知道如何在同一个查询中执行这两个操作。

    UPDATE account_external_ids 
    SET external_id = REPLACE(external_id,'gerrit:','username:') 
    WHERE external_id like '%gerrit%';
    

但无法弄清楚如何在同一个查询中同时执行这两个操作,例如:

INSERT INTO account_external_id   
select * from account_external_ids 
set external_id = replace(external_id, 'gerrit:', 'username:') 
where external_id like '%gerrit%';

任何指点都很好。

谢谢

您必须明确列出所有列,如果您正在修改任何列,则不能使用 SELECT *

INSERT INTO account_external_id (col1, col2, col3, col4, external_id)
SELECT col1, col2, col3, col4, REPLACE(external_id, 'gerrit:', 'username:')
FROM account_external_ids
WHERE external_id LIKE '%gerritt:%'