首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >在sql select语句中生成数字

在sql select语句中生成数字
EN

Stack Overflow用户
提问于 2016-05-04 16:04:47
回答 1查看 81关注 0票数 1

我有一个返回一些父记录和子记录的查询。我想以增量的方式为每个子记录返回一个唯一的id。因此,如果我有一个包含3个childs的记录和1个包含2个childs的记录,则希望返回。

代码语言:javascript
代码运行次数:0
运行
复制
     Parent/Child |  Parent_id | Child_id
1.   Parent record,  Parent_id,   0
2.   child_record,   Parent_Id,   1
3.   child_record,   Parent_Id,   2
4.   child_record,   Parent_Id,   3
5.   Parent record,  Parent_id,   0
6.   child_record,   Parent_Id,   1
7.   child_record,   Parent_Id,   2

对于如何从1生成child_id并递增1,然后为下一批子记录重新设置,您有什么想法吗?

EN

回答 1

Stack Overflow用户

发布于 2016-05-04 16:42:40

此查询根据其父id生成子编号:

代码语言:javascript
代码运行次数:0
运行
复制
select id_pk  -- pk; defines global sort order
     , p_c    -- node type ('parent', 'child')
     , p_id   -- parent id
     , row_number() over ( partition by p_id order by id_pk ) - 1 c_id
              -- synthetic child id. 
  from test_pc
     ;

根据需要调整order by子句中的排序标准。

示例:(孩子之间的顺序并不重要,只需要一个唯一的本地id )

代码语言:javascript
代码运行次数:0
运行
复制
     , row_number() over ( partition by p_id order by p_id, p_c desc ) - 1 c_id
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/37021896

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档