具有条件的相同表的MYSQL更新列

时间:2017-07-01 06:04:44

标签: mysql sql

我有一个这样的表,实际上我需要用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

3 个答案:

答案 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)

这对你有用