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

use*_*273 2 sql t-sql sql-server

我试图在我的表中同时更新几行.

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

Table Table1:

Id Primary
UserNumber INT


Table Table2
Id Primary
Id_T1 ForeignKey
UserId INT
OrderNumber INT
Run Code Online (Sandbox Code Playgroud)

有人可以帮忙吗?

注意:在表T2中,我需要UserId值,其中ordernumber具有最大值.

例如:

Id_T1 UserId OrderNumber 
15    24        1 
15    55        2 
15    72        3
Run Code Online (Sandbox Code Playgroud)

我想要收到的价值是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)
Run Code Online (Sandbox Code Playgroud)

但我得到这个错误:

消息147,级别15,状态1,行6聚合可能不会出现在WHERE子句中,除非它位于HAVING子句或选择列表中包含的子查询中,并且要聚合的列是外部引用.

Rag*_*ull 5

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

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)
Run Code Online (Sandbox Code Playgroud)