加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 站长学院 > MsSql教程 > 正文

SQL:从“无”中选择一个数字列表

发布时间:2020-12-12 08:34:31 所属栏目:MsSql教程 来源:网络整理
导读:从包含数字列表的“无”中选择一个关系的快速/可读的方式是什么.我想通过设置开始和结束值来定义哪些数字.我正在使用Postgres SQL和SQLite,并且将对可在两个/许多平台上工作的通用解决方案感兴趣. 期望的产出关系: # x 0 1 2 3 4 我知道我可以从“nothing”
从包含数字列表的“无”中选择一个关系的快速/可读的方式是什么.我想通过设置开始和结束值来定义哪些数字.我正在使用Postgres SQL和SQLite,并且将对可在两个/许多平台上工作的通用解决方案感兴趣.

期望的产出关系:

# x
  0
  1
  2
  3
  4

我知道我可以从“nothing”中选择一行:SELECT 0,1,2,3,4但是,它将这些值选择为列而不是行,并且需要在查询中指定所有值,而不是仅使用我的开始和结束值:0和4.

在Postgres中,您有一个特殊的generate_series函数用于这种情况:

SELECT * FROM generate_series(0,4) x;

这很好,但是非标准.我也可以想象一些使用临时表的复杂的解决方案,但是我想要有一些泛型和简单的东西:

SELECT * FROM [0..4]

也许使用SEQUENCE语句或一些魔术组合的SELECT 0和SELECT 4?

解决方法

在SQL服务器(和PostgreSQL)中,我将使用递归公用表表达式: SQL Server,PostgreSQL
with recursive Numbers as (
    select 0 as Number
    union all
    select Number + 1
    from Numbers
    where Number < 4
)
select Number
from Numbers

SQL FIDDLE EXAMPLE

但是据我所知,SQLite中没有WITH.

所以,可能的解决方案可能是

>创建用户定义的函数(this可能有帮助)
>创建一个数字从0到最大数字的表,然后只需从中选择它:

select Number from Numbers where Number >= 0 and Number <= 4

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读