首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

The generate_series Table-Valued Function

1.概述

1.1 等价递归公用表表达式

2.使用示例

generate_series(START,END,STEP)表值函数是包含在 SQLite 源代码树中的可载入扩展,并且被编译到命令行 shell 中。generate_series()表具有一个名为 “value” 的结果列,其中包含整数值和由参数 START,END 和 STEP 确定的行数。该表的第一行具有 START 值。后续行按 STEP 增加至 END。

省略参数采用默认值。STEP 默认为 1.END 默认为9223372036854775807.START 默认为0。

1.1 等价递归公用表表达式

可以使用递归公用表表达式来模拟 generate_series 表。如果三个参数是 $ start,$ end和$ step,那么等效的公用表表达式是:

代码语言:javascript
复制
WITH RECURSIVE generate_series(value) AS (
  SELECT $start
  UNION ALL
  SELECT value+$step FROM generate_series
   WHERE value+$step<=$end
) ...

公用表表达式工作时无需加载扩展名。另一方面,扩展程序更容易编程并且速度更快。

生成小于或等于100的所有5的倍数:

代码语言:javascript
复制
SELECT value FROM generate_series(5,100,5);

生成20个随机整数值:

代码语言:javascript
复制
SELECT random() FROM generate_series LIMIT 20;

找到帐户号码为10000到20000之间100的倍数的每个客户的名称。

代码语言:javascript
复制
SELECT customer.name
  FROM customer, generate_series(10000,20000,100)
 WHERE customer.id=value;
/* or */
SELECT name FROM customer
 WHERE id IN (SELECT value
                FROM generate_series(10000,20000,200));

扫码关注腾讯云开发者

领取腾讯云代金券