首页 > 解决方案 > SQL - 根据另一个表内容更新表行

问题描述

我有一个名为 #tempTab1 的临时表,其中包含以下列:

UserId, GroupId, Quantity

然后我有另一个表 #tempTab2 有类似的列:

IdUser, IdGroup, ItemQuantity

我想使用第二个表 ItemQuantity 列中的数据更新第一个表 Quantity 列。

我已经尝试使用以下查询来做到这一点:

UPDATE #tempTab1
SET #tempTab1.Quantity = #tempTab2.ItemQuantity
WHERE #tempTab1.UserId = #tempTab2.IdUser 
  AND #tempTab1.GroupId = #tempTab2.IdGroup

我得到的是

子查询返回超过 1 个值。当子查询跟随 =、!=、<、<=、>、>= 或子查询用作表达式时,这是不允许的。

处理它的最佳方法是什么?先感谢您

标签: sqlsql-servertsql

解决方案


你需要一个JOIN

UPDATE t1
   SET Quantity = t2.ItemQuantity
FROM #tempTab1 t1 JOIN
     #tempTab2
     ON t1.UserId = t2.IdUser AND t1.GroupId = t2.IdGroup;

推荐阅读