sql - 使用连接从另一个表更新表中的列
问题描述
我有两个表,我需要从表 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。这是不正确的。
解决方案
交叉应用前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
推荐阅读
- roda - Roda - 每次我保存时都会复制资产
- android - 如何翻译android系统
- c++ - 算术运算的结果,例如:C 浮点变量中的 1/3
- javascript - 在我达到 5 之前无法让我的脚本打印随机数
- arrays - 访问 flatlist 上的 redux 存储数组值反应原生
- kotlin - 为 jooq 生成的所有类插入注释
- java - CoreNLP:找出一个词是单数还是复数
- cassandra - 配置写入多副本时,Cassandra 是否使用两阶段提交?
- javascript - 当输入元素处于活动状态时如何禁用选择字段?
- node.js - 使用 mongoose 中的另一个集合数组填充数据