循环来自Temp Table的SQL QUERY记录结果并根据SQL QUERY结果更新另一个表

时间:2014-02-27 10:32:44

标签: sql sql-server sql-update

我很难制定这个问题。但是,我最好在技术上描述它。

我想更新,请说出具有以下形式的用户表:

--------------------------------------------------------------
UserID  ROLE_NAME VALUE
--------------------------------------------------------------
001       VALUE_Q   xx
002       VALUE_W   xx
003       VALUE_Q   xx
--------------------------------------------------------------

和喜欢ID与用户中的多个用户相关,如此

--------------------------------------------------------------
LikeId    Likes VALUE
--------------------------------------------------------------
001       Code   xx
002       Fun    xx
003       Eat    xx
--------------------------------------------------------------

和另一个与User Table to Many to Many有关的表有以下信息Let Say 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  
--------------------------------------------------------------

现在问我的问题......

我想将上述LikeID结果中共享相同#TempTable的所有用户更新为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,该怎么办?

而不是将所有userId替换为LikeId,而是将所有值相加并替换一个LikeId?

1 个答案:

答案 0 :(得分:2)

请根据要求使用连接,这里的sql看起来像:

 Update TestTable set UserId = #Temptable.LikeId
     from TestTable as test
    inner join  #Temptable on  #Temptable.UserId = test.UserId