我有一个这样的表,实际上我需要用 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
Run Code Online (Sandbox Code Playgroud)
预期结果表
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
Run Code Online (Sandbox Code Playgroud)
使用带有自连接的更新:
UPDATE yourTable t1
INNER JOIN yourTable t2
ON t1.SUPERIOR = t2.USERNAME
SET t1.SUPERIOR = t2.ID
Run Code Online (Sandbox Code Playgroud)
请注意,此更新不会触及具有NULL上级的记录,但这应该是可以接受的,因为这些记录保留NULL在您的预期输出中。