Sql 正在寻找游标的替代方法
我试图找出一种更好、更有效的方法来编写下面的脚本。有人能想出一种不用光标就能实现相同目标的方法吗 “用户”在表1中可能出现多次,但在表2中只能存在一次 表1Sql 正在寻找游标的替代方法,sql,sql-server,tsql,Sql,Sql Server,Tsql,我试图找出一种更好、更有效的方法来编写下面的脚本。有人能想出一种不用光标就能实现相同目标的方法吗 “用户”在表1中可能出现多次,但在表2中只能存在一次 表1 |Name |Access | ------------------- User1 |N | User1 |N | User1 |Y | |Name |Access | ------------------- User1 | | User2 |
|Name |Access |
-------------------
User1 |N |
User1 |N |
User1 |Y |
|Name |Access |
-------------------
User1 | |
User2 | |
User3 | |
表2
|Name |Access |
-------------------
User1 |N |
User1 |N |
User1 |Y |
|Name |Access |
-------------------
User1 | |
User2 | |
User3 | |
代码:
我的理解是,仅当来自表1的最新(由max obj列定义)访问为“Y”时,才需要更新表2的访问列 试试这个:
UPDATE @Table2
SET Access = CA.Access
FROM @Table2 AS T2
CROSS APPLY (
SELECT TOP 1 Access
FROM @Table1 AS T1
WHERE T1.Name = T2.Name
AND T1.Access = 'Y'
ORDER BY Obj DESC
) CA
表1是否真的列出了用户1 3次?如果是这样,user1最终应该拥有什么访问权限?对于像这样的问题,前面已经有了答案。。。例如:无需重新发明车轮。