所以我有两个表,一个 users 表和一个 user_roles 表:
用户
| user_id用户名||
|:-------------- || -----------------:|
| 1 | userX ||
| 2 | userY
user_roles
|用户名| user_id。|
|:----------------- | ---------------:|
| userX | NULL ||
| userY | NULL ||
我需要以某种方式遍历 user_roles 表。对于 user_roles 中每个与 users 中的 user_name 匹配的 user_name < / strong>,应该在 user_roles 中设置特定的user_id而不是NULL。我该怎么做?
注意:用户表中的用户名是唯一的。
答案 0 :(得分:0)
对于
user_name
中每个与user_roles
中的user_name
相匹配的users
,应设置特定的user_id
而不是{ {1}}
您可以使用相关子查询:
NULL
这假设user_roles
在update user_roles r
set r.user_id = (
select u.user_id from users u where u.user_name = r.user_name
)
中是唯一的。如果不是,那么您将需要某种聚合或筛选,以便subuquery仅返回一个记录。例如,这将从匹配的user_name
中选择较小的users
:
user_id
在SQL Server中,语法略有不同:
user_name
答案 1 :(得分:0)
它可能比使用子查询要好一些,但都可以。
update r
set r.user_id = u.user_id
from user_roles r LEFT JOIN users u ON r.Username = u.Username