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子句或选择列表中包含的子查询中,并且要聚合的列是外部引用.
您不需要在内部查询中使用别名.试试这个:
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)