如何编写MySQL查询语句输出100项斐波那契数列
MySQL查询生成最多100项斐波那契数列
以下是可直接运行的SQL实现,生成的数列从0开始,遵循「前两项为0、1,后续每一项等于前两项之和」的规则,最多支持输出100项:
实现代码(MySQL 8.0+ 推荐)
利用MySQL 8.0新增的递归公共表表达式(CTE)实现,逻辑简洁无额外依赖:
WITH RECURSIVE fibonacci (item_num, current_val, next_val) AS ( -- 初始化:第1项值为0,预存下一项值1 SELECT 1, CAST(0 AS DECIMAL(40,0)), CAST(1 AS DECIMAL(40,0)) UNION ALL -- 递归生成后续项 SELECT item_num + 1, next_val, current_val + next_val FROM fibonacci WHERE item_num < 100 -- 控制生成总项数,修改此处数值可调整输出长度 ) SELECT item_num AS 项序号, current_val AS 斐波那契数值 FROM fibonacci;
注意事项
- 类型选择:第100项斐波那契数值约为3.5*10^20,超出
BIGINT类型的存储上限,因此用DECIMAL(40,0)做类型转换,避免数值溢出报错 - 版本兼容:如果使用MySQL 5.x版本,不支持递归CTE语法,可以通过用户变量+内置数字序列表的方式实现,性能略低于递归写法
- 自定义长度:如果不需要100项,直接修改递归终止条件里的数字即可,比如要输出前10项,把
WHERE item_num < 100改为WHERE item_num < 10
前15项输出参考
1: 0
2: 1
3: 1
4: 2
5: 3
6: 5
7: 8
8: 13
9: 21
10: 34
11: 55
12: 89
13: 144
14: 233
15: 377
内容的提问来源于stack exchange,提问作者Kanishka yadav
相关产品推荐
相关产品推荐

