sql - t-sql使用内连接更新多行

标签 sql sql-server t-sql

我尝试同时更新表中的多行列。

我想从另一个具有外键的表中获取要更新的值。

Table Table1:

Id Primary
UserNumber INT


Table Table2
Id Primary
Id_T1 ForeignKey
UserId INT
OrderNumber INT

有人可以帮忙吗?

注意:在表 T2 中,我需要 UserId 值,其中订单号具有最大值。

例如:

Id_T1 UserId OrderNumber 
15    24        1 
15    55        2 
15    72        3

我想要接收的值是 72。

i have try this:
update T1 set T1.UserNumber = T2.UserId
FROM Table1 AS T1
INNER JOIN Table2 AS T2
ON T1.Id = T2.IdMain
WHERE T1.Id = T2.IdMain
AND T2.OrderNumber = (SELECT MAX(T2.OrderNumber) FROM Table2)

但我收到此错误:

Msg 147, Level 15, State 1, Line 6 An aggregate may not appear in the WHERE clause unless it is in a subquery contained in a HAVING clause or a select list, and the column being aggregated is an outer reference.

最佳答案

您不需要在内部查询中使用别名。 试试这个:

UPDATE T1 
SET T1.UserNumber = T2.UserId
FROM Table1 AS T1 INNER JOIN 
     Table2 AS T2 ON T1.Id = T2.IdMain
WHERE T1.Id = T2.IdMain
     AND T2.OrderNumber = (SELECT MAX(OrderNumber) FROM Table2)

关于sql - t-sql使用内连接更新多行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24991920/

相关文章:

sql-server - 如何在临时表中保存选择查询结果?

sql - 从逗号分隔的字符串中删除特定值的所有实例

sql - CTE 在 CASE EXIST 中返回错误值

mysql - 在数据库中创建字段

sql - ORDER BY 子句在使用 SELECT INTO 创建的表中不起作用

sql - 用另一个列的总和更新列

sql - SQL查询:在主键中查找空白

sql-server - TSQL Xpath 修改 XML 字符串

sql - 数据库 tbl 上的 dplyr 函数是本地执行还是远程执行?

sql - DB Design : Does having 2 Tables (One is optimized for Read, 一个用于写入)提高性能?