从包含数字列表的“无”中选择关系的快速/可读方法是什么?我想通过设置开始和结束值来定义哪些数字。我正在使用PostgresSQL和SQLite,并且会对在两种/多种平台上均可使用的 通用 解决方案感兴趣。
所需的输出关系:
# x 0 1 2 3 4
我知道我可以从“ nothing”中SELECT 0,1,2,3,4选择一行:但这会将值选择为列而不是行,并且需要在查询中指定所有值,而不是仅使用我的开始和结束值:0和4。
SELECT 0,1,2,3,4
0
4
在Postgres中,您有一种generate_series针对这种情况的特殊功能:
generate_series
SELECT * FROM generate_series(0,4) x;
这很好用,但不是标准的。我也可以想象使用临时表的一些复杂解决方案,但是我想要一些通用且简单的东西:
SELECT * FROM [0..4]
也许使用SEQUENCE陈述或一些神奇的组合SELECT 0和SELECT 4?
SEQUENCE
SELECT 0
SELECT 4
感谢所有答案!在讨论之后,我意识到使用数字表并不太复杂,并且在两种/多种平台上都能很好且快速地工作:
CREATE TABLE integers (i integer); INSERT INTO integers (i) VALUES (0); INSERT INTO integers (i) VALUES (1); ... INSERT INTO integers (i) VALUES (9); SELECT (hundreds.i * 100) + (tens.i * 10) + units.i AS x FROM integers AS units CROSS JOIN integers AS tens CROSS JOIN integers AS hundreds
您只需创建一次此表,就可以在需要一定范围的数字时使用它。