码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • with recursive用法


    with recursive 则是一个递归的查询子句,他会把查询出来的结果再次代入到查询子句中继续查询。

    with recursive d(n, fact) as (
    values (1,2)
    union all #合并
    select n+1, (n+1)*fact from d where n < 5)
    SELECT * from d;
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述

    递归过程如下:
    n=1 fact=2
    n=1,n<5: n=1+1=2,fact=(1+1)*2=4
    n=2,n<5:n=2+1=3,fact=(2+1)*4=12
    n=3,n<5:n=3+1=4,fact=(3+1)*12=48
    n=4,n<5:n=4+1=5,fact=(4+1)*48=240
    n=5 n>=5==stop

    with recursive d(n, fact) as (
    values (1,2)
    union all
    select n+2, (n+1)*fact from d where n < 5)
    SELECT * from d;
    
    • 1
    • 2
    • 3
    • 4
    • 5

    ![在这里插入图片描述](https://img-blog.csdnimg.cn/30c502c77737402e9c11e9f3787babff.png
    递归过程如下:
    n=1 fact=2
    n=1,n<5: n=1+2=3,fact=(1+1)*2=4
    n=3,n<5:n=3+2=5,fact=(3+1)*4=16
    n=5 n>=5==stop

    with recursive d(n, fact) as (
    values (1,2)
    union all
    select n+2, (n+1)*fact from d where n < 5)
    select sum(fact) from d;
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述
    sum(fact)=2+4+16=22

    with recursive d(n, fact) as (
    values (1,2)
    union all
    select n+2, (n+1)*fact from d where n < 5)
    select sum(n) from d;
    
    • 1
    • 2
    • 3
    • 4
    • 5

    在这里插入图片描述sum(n)=1+3+5=9

    select * from company;
    
    • 1

    在这里插入图片描述

    with recursive t(n) as (
       values (10)
       union all
       select salary from company where salary < 20000
    )
    select  * from t;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    with recursive t(n) as (
       values (10)
       union all
       select salary from company where salary < 20000
    )
    select  sum(n) from t;
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

  • 相关阅读:
    【和小白一起练习CTF】攻防世界:web基础练习题(1)
    代码复现: VoxelNet论文和代码解析 pytorch版本(二) Dataloader.py
    Cesium快速上手1-CesiumWidget-Scene结构
    three.js检测物体是否包含某物体或与某物体相交
    GD32F303固件库开发(8)----USART收发配置
    WPF 环形进度条的使用
    基于JavaSwing开发植物连连看游戏 课程设计 大作业源码
    主机ping不通虚拟机,虚拟机可以ping同主机
    CentOS7 安装 ElasticSearch7.10
    CMU15445 (Fall 2019) 之 Project#4 - Logging & Recovery 详解
  • 原文地址:https://blog.csdn.net/Apikaqiu/article/details/126016886
  • 最新文章
  • C# 内存安全性的重大演进:重新定义 unsafe 关键字
    [MAF的Agent管道详解-05]对话历史的持久化和输入输出的增强
    一行代码干翻 Java 反射?EggG 流式反射调用让反射优雅到不可思议
    JaVers 版本历史功能完整实现指南
    Github Project-AI Agentic Framework (.NET)
    [MAF的Agent管道详解-04]如何让LLM按照要求的结构输出数据?
    随机过程WebApp实验室:从随机动力学到 AI 洞察的概率世界
    前端视角下的 C#
    《GIS基础原理与技术实践》配套案例(Python版)
    GoF设计模式——代理模式
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号