繁体   English   中英

循环浏览临时表中的SQL QUERY记录结果,并根据SQL QUERY结果更新另一个表

[英]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

如果我必须先更新和删除重复的UserIdsum并为它们存储一个代表的LikeId,该怎么办?

而不是用LikeId替换所有userIdLikeId将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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM