sql-server - 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表有字段“名称”,我尝试使用另一个内部连接但失败了。任何帮助将不胜感激,谢谢。
解决方案
在您的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
推荐阅读
- css - How to align the header and button on the same line using bootstrap 4
- cookies - 无法在 .net core 2.0 API 中设置和获取 Cookie
- blueprism - 可以在单个 VM 中安装多个 Blue Prism 运行时资源吗?
- python - 记录python更改日志级别文本
- php - 如何使用 preg_match_all 从字符串中获取单词
- javascript - 不明白我使用 parseFloat 时发生了什么
- vue.js - 在 Vue 模板中渲染表格
- c# - POST csv 文件 httpclient C# 和 application/x-www-form-urlencoded
- html - 使用 Ubuntu 时如何从 angular4 中删除哈希 (#)
- asp.net - Angular 5.2 使用 Asp.net core 2.1 更新到 Angular 6 Visual Studio mac 7.5.2