使用join update或插入SQL Server从另一个表插入一个表

时间:2016-11-29 04:30:21

标签: sql sql-server inner-join insert-select

我目前有两张桌子,如下图所示。

第一个表名为bottle

enter image description here

第二个表名为cases

enter image description here

我正在尝试插入瓶子表中case_id = 0,在案例表中看到的值(即case_id = 100,100,103,103等......)。它们是两个独立的表,我试图加入它们而不创建NULL值。

如果我需要使用插入,加入或更新,请告诉我。我会手动执行此操作,但这些数据点将从PLC生效,并且不仅仅是下面显示的所有数据点。

1 个答案:

答案 0 :(得分:0)

没有明确的连接列可用于执行所需的UPDATE。但是我们可以通过使用特定顺序连接每个表的行号值来创建一个。在下面的查询中,我使用bottlebottle_id表中订购行号,使用casescase_id表中订购行号。

UPDATE t1
SET t1.case_id = t2.case_id
FROM
(
    SELECT t.*, ROW_NUMBER() OVER (ORDER BY bottle_id) rowId
    FROM bottle t
) t1
INNER JOIN
(
    SELECT t.*, ROW_NUMBER() OVER (ORDER BY case_id) rowId
    cases t
) t2
    ON t1.rowId = t2.rowId

这应该使bottle中的输出看起来像这样(省略了一些列):

bottle_id      case_id
1              100
2              100
3              103
4              103
5              104
6              104
7              105
8              105