zoukankan      html  css  js  c++  java
  • MySQL递归CTE(公共表表达式)(2)

    1、递归CTE由三个主要部分组成:

    • 形成CTE结构的基本结果集的初始查询(initial_query),初始查询部分被称为锚成员。
    • 递归查询部分是引用CTE名称的查询,因此称为递归成员。递归成员由一个UNION ALLUNION DISTINCT运算符与锚成员相连。
    • 终止条件是当递归成员没有返回任何行时,确保递归停止。

    1、1    递归CTE的执行顺序如下:

    1. 首先,将成员分为两个:锚点和递归成员。
    2. 接下来,执行锚成员形成基本结果集(R0),并使用该基本结果集进行下一次迭代。
    3. 然后,将Ri结果集作为输入执行递归成员,并将Ri+1作为输出。
    4. 之后,重复第三步,直到递归成员返回一个空结果集,换句话说,满足终止条件。
    5. 最后,使用UNION ALL运算符将结果集从R0Rn组合。

    2、递归成员限制

    递归成员不能包含以下结构:

    • 聚合函数,如MAX,MIN,SUM,AVG,COUNT等
    • GROUP BY子句
    • ORDER BY子句
    • LIMIT子句
    • DISTINCT

    3. 简单的MySQL递归CTE示例

    WITH RECURSIVE cte_count (n) 
    AS (
          SELECT 1
          UNION ALL
          SELECT n + 1 
          FROM cte_count 
          WHERE n < 3
        )
    SELECT n 
    FROM cte_count;


  • 相关阅读:
    Zookeeper
    RPC
    RabbitMQ学习总结
    ActiveMQ学习总结
    mybatis自动映射和手动映射
    oracle instantclient_12_2安装
    EFK(Elasticsearch+Filebeat+Kibana)收集容器日志
    prometheus-operator监控Kubernetes
    编译安装 keepalived-2.0.16.tar.gz
    Kubernetes pod平滑迁移
  • 原文地址:https://www.cnblogs.com/yuezc/p/12803972.html
Copyright © 2011-2022 走看看