我有一张桌子包含这样的东西
╔═══════╦══════════╗║ EMPID ║ UserName ║╠═══════╬══════════╣║ 1 ║ Josh ║║ 2 ║ Kate ║║ 3 ║ Josh ║║ 4 ║ Kate ║║ 5 ║ Kate ║║ 6 ║ Josh ║║ 7 ║ Morgan ║╚═══════╩══════════╝
我想复制所有具有Kate的行,但将重复项中的Kate替换为Kathy,然后复制所有包含Josh的行,但将复制项替换为Joshy作为用户名。我不确定该怎么做。可以请一些MySQL专家帮忙吗?

最佳答案

您可以使用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语句以插入调整后的名称。因此,以这种方式插入了正确数量的记录。

关于mysql - 复制SQL行并重命名重复的列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/35513183/

10-12 21:58