从包含数字列表的“无”中选择一个关系的快速/可读的方式是什么.我想通过设置开始和结束值来定义哪些数字.我正在使用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
但是据我所知,SQLite中没有WITH.
所以,可能的解决方案可能是
>创建用户定义的函数(this可能有帮助)
>创建一个数字从0到最大数字的表,然后只需从中选择它:
select Number from Numbers where Number >= 0 and Number <= 4
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。