在sqlite中选择范围(1到100)之间的数字

Ram*_*uri 15 sqlite

我知道SQL中的一些解决方案,但是从SQlite找不到任何解决方案.

我只想执行一个select查询,返回一个从1到100的数字结果集.

Numbers
  1
  2
  3
  4
  ......
  5
Run Code Online (Sandbox Code Playgroud)

更正:我根本没有桌子.(但是像dualMySQL 这样的虚拟表鼓励使用解决方案)

小智 25

谢谢sgmentzer!受到你的回答的启发,我继续发现了这个:

WITH RECURSIVE
  cnt(x) AS (
     SELECT 1
     UNION ALL
     SELECT x+1 FROM cnt
      LIMIT 100000
  )
SELECT x FROM cnt;
Run Code Online (Sandbox Code Playgroud)

  • 需要Sqlite版本至少3.8才能使用WITH。顺便说一句,“RECURSIVE”和“(x)”是可选的:“with cnt as (select 1 x union select x+1 from cnt where x<100000) select x from cnt” (2认同)

Bas*_*Ben 6

怎么样

SELECT * FROM myTable WHERE myNumber >= 1 AND myNumber <= 100;
Run Code Online (Sandbox Code Playgroud)

  • @BastiBen因为它对于大量行更有效,例如,如果您有数百万行,您必须检索它们,循环它们然后显示它们。这比直接查询选择所需的项目需要更多的时间 (3认同)
  • 为什么不用您正在使用的编程语言创建循环? (2认同)

小智 6

用于在SQLite中生成系列1 <= n <= 100000的示例子查询.没有创建或使用表.

select 1+e+d*10+c*100+b*1000+a*10000 as n from
(select 0 as a union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9),
(select 0 as b union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9),
(select 0 as c union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9),
(select 0 as d union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9),
(select 0 as e union select 1 union select 2 union select 3 union select 4 union select 5 union select 6 union select 7 union select 8 union select 9);
Run Code Online (Sandbox Code Playgroud)