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

标签 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%';
    

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

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:%'

关于MySql复制一行并替换副本中的部分字段,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29541721/

相关文章:

mysql - 查询以 & 开头的值 - 在 Oracle 中有效但在 MySQL 中无效?

mysql - 如何使用子选择?

java - 从Java中的字符串中删除双引号

vim - 如何替换 vi 中的匹配分隔符?

Java去除ArrayList中的重复对象

mysql - 用于计算每个邮箱未读电子邮件数量的数据库架构

php - 如何删除多个连接,执行时间较长。如何改善查询结果

Python timedelta用pandas中的字符串替换0时间

c# - 如何从 MS Access 数据库中删除重复行 (C#)

php - 比较数组中的条目并删除重复项(PHP、MySQL)