我有一个这样的表,实际上我需要用id而不是name更新上级列

通过使用mysql UPDATE查询

实际表

ID   |  USERNAME  |  SUPERVISOR_USERNAME  |  SUPERIOR
1    |  jdoe      |  jsmith               | NULL
2    |  jsmith    |  dduck                | NULL
3    |  ANU       |  jsmith               | jdoe
4    |  JOHN      |  dduck                | jdoe
5   |  NIKHIL     |  jsmith               | jsmith
6   |  JOSE       |  dduck                | jsmith


预期结果表

ID   |  USERNAME  |  SUPERVISOR_USERNAME  |  SUPERIOR
1    |  jdoe      |  jsmith               | NULL
2    |  jsmith    |  dduck                | NULL
3    |  ANU       |  jsmith               | 1
4    |  JOHN      |  dduck                | 1
5   |  NIKHIL     |  jsmith               | 2
6   |  JOSE       |  dduck                | 2

最佳答案

使用具有自联接的更新:

UPDATE yourTable t1
INNER JOIN yourTable t2
    ON t1.SUPERIOR = t2.USERNAME
SET t1.SUPERIOR = t2.ID


请注意,此更新不会触及具有NULL上级的记录,但这应该是可以接受的,因为这些记录在预期输出中仍为NULL

关于mysql - 条件相同的表的MYSQL更新列,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/44857890/

10-09 08:25