10.24,没有休假的节日

今天是一年一度的程序员节,也被称为码农的劳动节。咱们码农作为社会的栋梁,虽然是节日,但休假是不可能休假的。

既然不能休假,那么我们就来学习一个新的知识点吧。

-- 递归查询输出 2 的 N 次方WITH RECURSIVE d(n, val) AS (SELECT 12 -- 初始化UNION ALL SELECT n+1, val*2 -- 递归执行FROM dWHERE n < 10)SELECT * FROM d;
n |val |--+----+ 1| 2| 2| 4| 3| 8| 4| 16| 5| 32| 6| 64| 7| 128| 8| 256| 9| 512|10|1024|

以上语句中的 WITH 代表通用表表达式,相当于一个视图或者临时表;RECURSIVE 用于定义递归语句。

第一个 SELECT 语句是初始化,生成 2 的 1 次方;第二个 SELECT 语句用于递归执行,它可以基于前面的执行结果再次查询,生成 2 的 2 次方,3 次方,等等;随着 n 的增加,最终递归查询不满足条件 n < 10,结束递归。

最后一行结果代表了 2 的 10 次方,1024,也是程序员节由来。

请使用浏览器的分享功能分享到微信等