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

时间:2015-04-09 14:45:11

标签: mysql replace duplicates

我试图在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%';
    
  3. 但无法弄清楚如何在同一个查询中执行这两项操作,例如:

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

    任何指针都会很棒。

    感谢

1 个答案:

答案 0 :(得分:1)

您必须明确列出所有列,如果您要修改任何列,则无法使用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:%'