更新从同一表中的另一行中获取的现有行中的数据

问题描述

我正在尝试根据各种指南和其他计算器问题中的发现构建的查询

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';