MySQL8.0新特性CTE表达式递归实现累加运算 1+2+…+n 等于多少?

上一篇内容,通过MySQL存储过程实现累加运算 1+2+...+n 等于多少的需求,使用当前主流版本MySQL5.7.x 和MySQL8.0.x,以及最新的MySQL8.4 LST版本。

WITH AS子句在MySQL 8.0.x及更高版本中得到支持,而在MySQL 5.7及以下版本中则不支持。

参考地址如下:

https://blog.csdn.net/zxrhhm/article/details/139185014?spm=1001.2014.3001.5501

1、本文内容

MySQL8.0新特性CTE(Common Table Expressions)的子句表达式,递归实现累加运算 1+2+...+n 等于多少?

sql 复制代码
(root@192.168.80.85)[superdb]> select @@version;
+-----------+
| @@version |
+-----------+
| 8.4.0     |
+-----------+
1 row in set (0.00 sec)

-- 定义一个cte recursive 公用表达式t_sumtest 
-- num_sum     列标识计算的和
-- last_num    列标识当前数的前一个数值
-- current_num 列标识当前数的值

(root@192.168.80.85)[superdb]> WITH recursive t_sumtest (num_sum,last_num,current_num) as
    -> ( SELECT 1,0,1 FROM DUAL
    ->   UNION ALL
    ->   SELECT t1.num_sum+t1.last_num,t1.num_sum,t1.current_num+1 FROM t_sumtest t1 WHERE t1.current_num<10
    ->  )
    -> SELECT num_sum,last_num,current_num FROM t_sumtest;
+---------+----------+-------------+
| num_sum | last_num | current_num |
+---------+----------+-------------+
|       1 |        0 |           1 |
|       1 |        1 |           2 |
|       2 |        1 |           3 |
|       3 |        2 |           4 |
|       5 |        3 |           5 |
|       8 |        5 |           6 |
|      13 |        8 |           7 |
|      21 |       13 |           8 |
|      34 |       21 |           9 |
|      55 |       34 |          10 |
+---------+----------+-------------+
10 rows in set (0.00 sec)


(root@192.168.80.85)[superdb]> WITH recursive t_sumtest (num_sum,last_num,current_num) as
    -> ( SELECT 1,0,1 FROM DUAL
    ->   UNION ALL
    ->   SELECT t1.num_sum+t1.last_num,t1.num_sum,t1.current_num+1 FROM t_sumtest t1 WHERE t1.current_num<10
    ->  )
    -> SELECT num_sum,last_num,current_num FROM t_sumtest where current_num=10;
+---------+----------+-------------+
| num_sum | last_num | current_num |
+---------+----------+-------------+
|      55 |       34 |          10 |
+---------+----------+-------------+
1 row in set (0.01 sec)
相关推荐
唐青枫9 小时前
MySQL JSON 实战详解:从存储、查询、更新到 JSON_TABLE 与索引
sql·mysql
小满8789 小时前
5.Mysql事务隔离级别与锁机制
mysql
元Y亨H1 天前
技术笔记:MySQL 字符集排序规则与大小写敏感性问题解决方案
mysql
这个DBA有点耶2 天前
GROUP BY优化全解:如何写出既不丢数据又飞快的分组查询
数据库·mysql·架构
掉头发的王富贵2 天前
【StarRocks】极限十分钟入门StarRocks
数据库·sql·mysql
SamDeepThinking2 天前
一条UPDATE语句在MySQL 8.0中到底加了几把锁?
后端·mysql·程序员
李白客4 天前
KES新版MySQL兼容能力再升级意味着什么?
mysql·国产数据库
Jim6006 天前
【吃透 MySQL InnoDB连载】第 1 章・解密线上数据库高频故障
mysql
GreatSQL6 天前
gt-checksum v4.0.0 新功能解读系列文章(4):SSL 加密连接——数据校验传输安全再升级
mysql