Mysql 如何更新列以匹配同一表中另一列的数据

Mysql 如何更新列以匹配同一表中另一列的数据,mysql,sql,mariadb,Mysql,Sql,Mariadb,我正在尝试执行一个查询,该查询将更新parent\u id行,以反映与parent\u id具有相同成员id的相应用户名 下面是db_name.members表的表示形式,我想将父\u id转换为相应的用户名 +--------+----------+-----------+-----------+ | name | username | member_id | parent_id | +--------+----------+-----------+-----------+ | Jeff

我正在尝试执行一个查询,该查询将更新parent\u id行,以反映与parent\u id具有相同成员id的相应用户名

下面是db_name.members表的表示形式,我想将父\u id转换为相应的用户名

+--------+----------+-----------+-----------+
|  name  | username | member_id | parent_id |
+--------+----------+-----------+-----------+
| Jeff   | Jeff     |       167 | NULL      |
| Asia   | Asia     |       143 | NULL      |
| Bogart | Bogart   |       389 | 167       |
| Greg   | Greg     |       894 | NULL      |
| Hatsy  | Hatsy    |       328 | 167       |
| Super  | Super    |       721 | NULL      |
| Goku   | Goku     |       534 | 894       |
| Banana | Banana   |       520 | NULL      |
| Kyle   | Kyle     |       456 | 520       |
+--------+----------+-----------+-----------+
之后它应该是什么样子:

+--------+----------+-----------+-----------+
|  name  | username | member_id | parent_id |
+--------+----------+-----------+-----------+
| Jeff   | Jeff     |       167 | NULL      |
| Asia   | Asia     |       143 | NULL      |
| Bogart | Bogart   |       389 | Jeff      |
| Greg   | Greg     |       894 | NULL      |
| Hatsy  | Hatsy    |       328 | Jeff      |
| Super  | Super    |       721 | NULL      |
| Goku   | Goku     |       534 | Greg      |
| Banana | Banana   |       520 | NULL      |
| Kyle   | Kyle     |       456 | Banana    |
+--------+----------+-----------+-----------+
这是我当前(不工作)的查询:


您可以通过使用
内部联接的
更新

UPDATE members m1 INNER JOIN members m2 ON m1.parent_id = m2.member_id
  SET m1.parent_id = m2.username
请记住,如果
parent\u id
列是整数/数字列,则不能将用户名设置为此列。您可以使用
选择
而不是
更新

SELECT m1.name, m1.username, m1.member_id, m2.username AS parent_username
FROM members m1 LEFT JOIN members m2 ON m1.parent_id = m2.member_id

您确定需要这样做吗?每次需要父ID的名称时使用联接不是更好吗?
SELECT m1.name, m1.username, m1.member_id, m2.username AS parent_username
FROM members m1 LEFT JOIN members m2 ON m1.parent_id = m2.member_id