首页 > 解决方案 > SQL 查询、更新自、多内连接

问题描述

假设我的 SQL 数据库中有 3 个表:

AspNetUserRoles - 保存将用户与角色链接的记录 AspNetUsers - 保存用户 AspNetRoles - 保存角色

我想更新分配给电子邮件用户的角色:some@email.com

我创建了这个查询并且它有效:

-- Update tester account role
Update  AspNetUserRoles
Set RoleId = 4
From AspNetUsers as b Inner Join AspNetUserRoles as a
    On a.UserId = b.Id Where b.Email = 'some@email.com'

现在,如何编辑此查询,而不是提供RoleId(在本例中为 4),而是通过指定其名称从其表中检索特定角色 ID?AspNetRoles表有字段“名称”,我尝试使用另一个内部连接但失败了。任何帮助将不胜感激,谢谢。

标签: sql-serversql-updatesubquery

解决方案


在您的UPDATE查询中,我删除了 ,JOIN因为您的邮件表中有此信息。

所以我添加了子查询来更新你的 RoleId

尝试这个:

UPDATE AspNetUserRoles
SET RoleId = (SELECT c.id FROM AspNetRoles c WHERE c.name = 'MyRoleName')
FROM AspNetUsers as b 
WHERE b.Email = 'some@email.com'
AND AspNetUserRoles.UserId = b.Id

推荐阅读