首页 > 解决方案 > 使用新插入的分组行的 ID 更新分组行

问题描述

我想对表 A 的几行进行分组,并为每一组分组的行在表 B 中插入一个新行。接下来,我想用新插入的行的 ID 更新表 A 的行。

使用 'grouplines' 将行插入表中就像:

INSERT INTO B(...,...,...)
SELECT col1, col2 FROM A
GROUP BY col1,col2 

这将在表 B 中生成一个 ID 列表。我想用表 B 的相应组行的 ID 更新表 A 的行。

有可能这样做吗?

一些样本数据:

在此处输入图像描述

分组表 B 后如下所示:

在此处输入图像描述

然后表 A 应如下所示:

在此处输入图像描述

标签: sql-servertsqlgroup-bysql-updatesql-insert

解决方案


事实上,您的查询可能会插入多行。

我认为一种解决方案将使用两个查询:首先从表 a 中插入表 b,使用表 b 中新创建的 id 更新表 a。


INSERT INTO B(col1, col2, col3)
SELECT DISTINCT col1, col2, col3 FROM A

UPDATE A
SET A.B_ID = B.B_ID
FROM A
INNER JOIN B
    ON  A.col1 = B.col1
    AND A.col2 = B.col2
    AND A.col3 = B.col3

推荐阅读