我有一个这样的表,实际上我需要用id而不是名称
来更新高级列使用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
答案 0 :(得分:3)
使用自加入的更新:
UPDATE yourTable t1
INNER JOIN yourTable t2
ON t1.SUPERIOR = t2.USERNAME
SET t1.SUPERIOR = t2.ID
请注意,此更新不会触及NULL
优先级的记录,但这应该是可以接受的,因为这些记录在预期输出中保持NULL
。
答案 1 :(得分:1)
尝试将SELECT
查询包含到别名中,例如:
UPDATE users t,
(SELECT id, username FROM users) t2
SET t.superior = t2.id
WHERE t.superior = t2.username;
这里是 SQL Fiddle 。
答案 2 :(得分:0)
只需写下
tableView.deselectRow(at: indexPath, animated: false)
这对你有用