T-SQL-SQL Server-根据ID_A从ID_B更新记录
我有两个维度:T-SQL-SQL Server-根据ID_A从ID_B更新记录,sql,sql-server,tsql,Sql,Sql Server,Tsql,我有两个维度: Permissions - Permission_ID - Permission_Desc Users: - User_ID - User_Name 还有一个事实表: 现在我要做的是将User_ID 1拥有的权限应用于User_2。将用户\u ID\u 1的权限复制到用户\u ID\u 2 我如何在Update语句中做到这一点 谢谢 这不是最有效的方法,但是,我认为只要我正确理解了这个问题,这应该能起到作用:- Create Table #permissions
Permissions
- Permission_ID
- Permission_Desc
Users:
- User_ID
- User_Name
还有一个事实表:
现在我要做的是将User_ID 1拥有的权限应用于User_2。将用户\u ID\u 1的权限复制到用户\u ID\u 2
我如何在Update语句中做到这一点
谢谢 这不是最有效的方法,但是,我认为只要我正确理解了这个问题,这应该能起到作用:-
Create Table #permissions (permission_id int, permission_desc
varchar(100))
insert into #permissions values (1, 'select'),(2,'insert')
Create Table #users (user_idd int, user_desc varchar(100))
insert into #users values (1, 'John'),(2,'Rohn')
Create Table #fact_table (user_idd int, permission_id int, sal int)
insert into #fact_table values (1,1,200), (2,2,300)
select * from #fact_table
update a set a.permission_id = b.permission_id from #fact_table a
inner join (
select (select user_idd from #fact_table where user_idd=2) user_idd,
permission_id, sal from #fact_table where permission_id = 1
) b on a.user_idd=b.user_idd
一种快速的方法是删除分配给用户2的所有权限。然后:在事实表格中插入从事实表格中选择2、权限ID、工资金额,其中用户ID=1,假设用户2的ID=2,用户1的ID=1。我还假设用户_2应该和用户_1拥有相同的工资金额,简单的更新在这里不起作用吗?更新事实\u表设置权限\u id=从事实\u表中选择权限\u id,其中用户\u id=用户\u 1\u id,其中用户\u id=用户\u 2\u id?你试过什么?@Rigerta这似乎是多对多,但不起作用relationship@Rigerta问题在于,UserID_1比UserID_2拥有更多的权限。我运行您的查询,发现以下问题:子查询返回的值超过1。当子查询在=、!=、=或者当子查询用作表达式时。@Petaflop nop,User_2和User_1的薪水不一样
Create Table #permissions (permission_id int, permission_desc
varchar(100))
insert into #permissions values (1, 'select'),(2,'insert')
Create Table #users (user_idd int, user_desc varchar(100))
insert into #users values (1, 'John'),(2,'Rohn')
Create Table #fact_table (user_idd int, permission_id int, sal int)
insert into #fact_table values (1,1,200), (2,2,300)
select * from #fact_table
update a set a.permission_id = b.permission_id from #fact_table a
inner join (
select (select user_idd from #fact_table where user_idd=2) user_idd,
permission_id, sal from #fact_table where permission_id = 1
) b on a.user_idd=b.user_idd