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

时间:2014-07-28 09:13:08

标签: sql sql-server tsql

我尝试同时在表格中更新多行。

我希望从另一个有外键的表中获取更新值。

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子句中包含的子查询中   或选择列表,正在聚合的列是外部   参考

1 个答案:

答案 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)