Small. Fast. Reliable.
Choose any three.
generate_series表值函数

1.概述

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,则等效的公用表表达式为:

与递归generate_series(value)AS(
  选择$开始
  全联盟
  选择值+ $ step FROM generate_series
   值+ $ step <= $ end
)...

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

2.用法示例

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

从generate_series(5,100,5)中选择值;

生成20个随机整数值:

从generate_series LIMIT 20中选择random();

找出每个客户的帐户名称(其帐号是10000到20000之间的100的偶数倍)。

选择customer.name
  来自客户,generate_series(10000,20000,100)
 WHERE customer.id = value;
/* 或者 */
选择客户姓名
 ID IN(选择值)
                来自generate_series(10000,20000,200));