SQL - 根据另一个表内容更新表行[重复]

Posted

技术标签:

【中文标题】SQL - 根据另一个表内容更新表行[重复]【英文标题】:SQL - Updating table rows based on anothers table content [duplicate] 【发布时间】:2019-04-16 19:36:43 【问题描述】:

我有一个名为 #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 个值。当子查询跟随 =、!=、、>= 或子查询用作表达式时,这是不允许的。

最好的处理方法是什么?提前谢谢你

【问题讨论】:

【参考方案1】:

你需要一个JOIN:

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

【讨论】:

以上是关于SQL - 根据另一个表内容更新表行[重复]的主要内容,如果未能解决你的问题,请参考以下文章

使用另一个表中的内容更新 SQL Server 表[重复]

如果它们是重复行,如何用另一个表覆盖表行

SQL查询语法错误,使用另一个表的数据更新表[重复]

如何动态添加表行[重复]

如何使用php更新mysql表中的特定表行[重复]

需要为 SQL Server 中另一个值重复的记录更新一列 [重复]