首页 > 解决方案 > 使用连接从另一个表更新表中的列

问题描述

我有两个表,我需要从表 2 复制到表 1。我希望表 1. 列偏离根据表 2 中的匹配进行更新。

条件 表2与表1有多个项目,(表1与表2有很多关系)。所以在那种情况下,我需要对其进行排序RotationOrder并占据第一行。

表格1

Id  Code    Departure
479 JJ1256  NULL
480 SR1255  NULL
481 PFOBLEM NULL
482 SO1301  NULL
483 TS1302  NULL
484 YB1305  NULL
485 CU1303  NULL

表 2

Id  Departure   RotationOrder    CanLoad
479 NULL    1       1
480 NULL    1       2                 1
481 NULL    1       3                 1
482 NULL    1       4
482 NULL    3
482 NULL    2
482 NULL    4
483 2013-01-21  1                     1
483 NULL    3
483 NULL    4
483 NULL    6

我试过的

UPDATE table1 set Departure = (select top 1 table2.Departure from table2 
INNER JOIN table1 on table1.Id = table2.Id  where CanLoad =1 order by 
RotationOrder )
FROM TABLE1  INNER JOIN TABLE2 
ON TABLE1.Id = TABLE2.Id

问题 此查询从 table2 复制第一个空值并将其粘贴到 table1。这是不正确的。

标签: sqlsql-serversql-update

解决方案


交叉应用前1名,心爱的经典:

UPDATE t1 set Departure = q.Departure
FROM table1  t1
cross apply 
(
    SELECT TOP 1 Departure
    FROM table2
    WHERE t1.Id=table2.Id
    ORDER BY RotationOrder asc
)q  

推荐阅读