我需要一些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
答案 0 :(得分:2)
您可以使用row_number
设置排序顺序并插入另一个表格。
insert into channelsorting (channelid,sortorder)
select channelid,row_number() over(partition by otherid order by channelid) sortorder
from channels