问题描述
我正在尝试根据各种指南和其他计算器问题中的发现构建的查询:
UPDATE `characters`
SET `level`,`xp`,`taximask` = (SELECT `level`,`taximask`
FROM `characters`
WHERE `guid` = 111) WHERE `name` = 'targetname';
在这个例子中,我想将 level、xp 和 taxmask 列的内容从 guid 匹配 111 的行复制到 name 匹配 targetname 的行。两者都在同一个数据库/表中。
由于 3 列只是我需要复制 25 多列的查询的占位符,我正在寻找一种方法来使查询工作并可能缩短它。
解决方法
这是我从朋友那里得到的可行解决方案:
UPDATE `characters` AS t1
INNER JOIN `characters` AS t2 ON t2.guid = 111
SET t1.level = t2.level,t1.xp = t2.xp,t1.taximask = t2.taximask
WHERE t1.`name` = 'targetname';