复制SQL行并重命名重复的列

时间:2016-02-19 19:14:58

标签: mysql duplicates

我有一个包含这样的东西的表 ╔═══════╦══════════╗ ║ EMPID ║ UserName ║ ╠═══════╬══════════╣ ║ 1 ║ Josh ║ ║ 2 ║ Kate ║ ║ 3 ║ Josh ║ ║ 4 ║ Kate ║ ║ 5 ║ Kate ║ ║ 6 ║ Josh ║ ║ 7 ║ Morgan ║ ╚═══════╩══════════╝ 我想要复制所有拥有Kate的行,但在Kathy的副本中替换Kate,然后复制包含Josh的所有行,但用Joshy替换重复项作为用户名。我不知道该如何解决这个问题。有些MySQL专家可以帮忙吗?

1 个答案:

答案 0 :(得分:1)

您可以使用INSERT...SELECT syntax

插入这些变体记录
INSERT INTO mytable (UserName)
    SELECT 'Kathy'
    FROM   mytable
    WHERE  UserName = 'Kate';

然后为Josh做类似的事情:

INSERT INTO mytable (UserName)
    SELECT 'Joshy'
    FROM   mytable
    WHERE  UserName = 'Josh';

如果您更喜欢一个SQL语句:

INSERT INTO mytable (UserName)
    SELECT CASE UserName
               WHEN 'Kate' THEN 'Kathy'
               WHEN 'Josh' THEN 'Joshy'
           END
    FROM   mytable
    WHERE  UserName IN ('Kate', 'Josh');

在任何一种情况下,SELECT语句都会确保您获得每个重复实例的结果( Kate 的3个结果和 John 的3个结果)。对于每个结果,您都要提供要插入的调整后名称的UDPATE语句。因此,以这种方式插入正确的记录数。