![](/img/trans.png)
[英]SQL: Looping Through Results From One Query and Performing Another Query With Each Result
[英]Looping through a SQL QUERY record result from a Temp Table and Updating another table based on SQL QUERY results
我很难提出这个问题。但是,我可以在这里更好地描述它。
我想更新,让用户表具有以下形式:
--------------------------------------------------------------
UserID ROLE_NAME VALUE
--------------------------------------------------------------
001 VALUE_Q xx
002 VALUE_W xx
003 VALUE_Q xx
--------------------------------------------------------------
像这样在单独的表格中与用户相关的多个ID和喜欢ID
--------------------------------------------------------------
LikeId Likes VALUE
--------------------------------------------------------------
001 Code xx
002 Fun xx
003 Eat xx
--------------------------------------------------------------
并且,与多对多用户表相关的另一个表具有以下信息,让我们说UserToLikeingTable
UserToLikingID UserId LikeId
--------------------------------------------------------------
01 001 001
02 002 001
03 002 002
--------------------------------------------------------------
并且,这是另一个表,该表直接从UserTable持有UserId。
--------------------------------------------------------------
TESTTABLEID USER_ID VALUE
--------------------------------------------------------------
001 001 100
002 002 220
003 003 400
004 002 231
--------------------------------------------------------------
我想要的是,首先列出共享相同喜好的重复用户,然后在#TempTable中完成以下操作
--------------------------------------------------------------
LikeID UserId VALUE
--------------------------------------------------------------
001 001 100
001 002 200
002 003 400
002 004 500
003 005 211
003 005 210
--------------------------------------------------------------
我想将所有与上述#TempTable
结果共享相同LikeID
用户更新为TESTTABLE,如下所示:我的最终结果应类似于:为先前结果中的所有LikeID的LikeID更新UserId。
TESTTABLEID USER_ID VALUE
--------------------------------------------------------------
001 001 100
002 001 220
003 002 400
004 002 500
--------------------------------------------------------------
我对您有任何帮助吗? 如何循环运行以补全值?
Hint
:
Update TestTable set UserId = #Temptable.LikeId
FROM #Temptable
where #Temptable.UserId = TestTable.UserId
如果我必须先更新和删除重复的UserId
并sum
并为它们存储一个代表的LikeId,该怎么办?
而不是用LikeId
替换所有userId
, LikeId
将have的值求和并替换一个LikeId?
请根据需要使用联接,此处的sql如下所示:
Update TestTable set UserId = #Temptable.LikeId
from TestTable as test
inner join #Temptable on #Temptable.UserId = test.UserId
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.