开发者社区> 问答> 正文

条件地从表A插入表B

我有一个带有以下各列的表A

Name age phoneNumber
A     26 12345
B     34 87654
C     5  98765

我的输出表还包含相同的列名,但没有数据

我需要生成如下所述的输出表

Name age phoneNumber
A     10 12345
A     10 12345
A     6 12345
B     10 87654
B     10 87654
B     10 87654
B     4 87654
C     5  98765

那就是我每次都会在输入表中将年龄减去10直到年龄<10,如果年龄小于10,则将其移动到输出表中

任何人都可以指导我如何执行此操作以获得所需的输出

展开
收起
祖安文状元 2020-01-05 14:48:48 380 0
1 条回答
写回答
取消 提交回答
  • 这看起来是使用递归cte的好地方:

    with cte as (
        select name, age, age % 10 new_age, phoneNumber, 1 i from mytable
        union all
        select name, age, 10, phoneNumber, i + 1
        from cte
        where age > i * 10
    )
    select name, new_age age, phoneNumber from cte order by name, age desc
    
    

    DB Fiddle上的演示:

    名称| 年龄| 电话号码
    :--- | -:| ----------:
    A | 10 | 12345
    A | 10 | 12345
    A | 6 | 12345
    B | 10 | 87654
    B | 10 | 87654
    B | 10 | 87654
    B | 4 | 87654
    C | 5 | 98765
    
    2020-01-05 14:49:03
    赞同 展开评论 打赏
问答地址:
问答排行榜
最热
最新

相关电子书

更多
低代码开发师(初级)实战教程 立即下载
冬季实战营第三期:MySQL数据库进阶实战 立即下载
阿里巴巴DevOps 最佳实践手册 立即下载