我尝试同时在表格中更新多行。
我希望从另一个有外键的表中获取更新值。
Table Table1:
Id Primary
UserNumber INT
Table Table2
Id Primary
Id_T1 ForeignKey
UserId INT
OrderNumber INT
有人可以帮忙吗?
注意:在表T2中,我需要UserId值,其中ordernumber具有最大值。
例如:
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聚合可能不会出现在 WHERE子句,除非它在HAVING子句中包含的子查询中 或选择列表,正在聚合的列是外部 参考
答案 0 :(得分: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)