我有一张桌子包含这样的东西╔═══════╦══════════╗║ 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/