我想对表A的几行进行分组,并为每组分组的行向表B中插入新行。 接下来,我想用新插入的行的ID更新表A的行。
使用'grouplines'将行插入表中就像
INSERT INTO B(...,...,...)
SELECT col1, col2 FROM A
GROUP BY col1,col2
这将在表B中产生ID列表。我想用表B的相应组行的ID更新表A的行。
可以这样做吗?
一些示例数据:
对表B进行分组后,如下所示:
然后表A应该看起来像:
答案 0 :(得分:1)
实际上,您的查询可能会插入多个行。
我认为一个解决方案将使用两个查询:首先从表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
答案 1 :(得分:0)
您可以通过使用Row_Number
来获得表B,如下所示:
Select ROW_NUMBER() OVER(ORDER BY Category) as ID, Name, Category
into #B
from #A
group by Name, Category
然后像这样与表B联接后更新表A
Update a
set a.ID_Of_Group_row = b.ID
from #A a
inner join #B b on a.Category = b.Category
输出