查询循环遍历一个表并按组递增插入另一个表

时间:2016-08-15 13:10:40

标签: sql sql-server tsql

我需要一些sql查询的帮助。我有两个简单的表,一个包含Channels,每个表都有一个唯一的标识符(ChannelID),另一个包含一个到多个ID(OtherID)。第二个将包含每个频道的排序顺序,因为它出现在另一个查询中。这个排序表目前是空的,我的频道表有几千条记录。

预期的结果是通过OtherID循环遍历每个ChannelID并将其递增地插入到ChannelSorting中,再次为每个新的"集群启动SortOrder种子1#34;频道ID的编号,按其他ID分组。

频道

ChannelID    OtherID
---------    -------
1             1
2             1
3             1
4             1
5             2
6             2

ChannelSorting(预期结果)

ChannelID    SortOrder
---------    ---------
1            1
2            2
3            3
4            4
5            1
6            2

1 个答案:

答案 0 :(得分:2)

您可以使用row_number设置排序顺序并插入另一个表格。

insert into channelsorting (channelid,sortorder)
select channelid,row_number() over(partition by otherid order by channelid) sortorder
from channels