什麼是快速/可讀的方式從包含數字列表的「nothing」中選擇一個關係。我想通過設置開始和結束值來定義哪些數字。我正在使用Postgres SQL和SQLite,並且對通用解決方案感興趣,這些解決方案可以在兩個/多個平臺上工作。SQL:從「nothing」中選擇一個數字列表
所需的輸出關係:
# x
0
1
2
3
4
我知道,我可以從「無」中選擇一個行: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
一些神奇的組合?
你可能會使用高達1000的數字我會說 - 也許在表格上放一個索引。否則,請創建諸如numbers_to_1000,numbers_to_1000000之類的視圖來封裝這些crossjoins。 –
@Juve,你可以接受一些答案或發佈你的答案並接受它嗎? –
當我開始尋找時,我很驚訝於這個簡單外觀的任務要實現的多麼尷尬。這裏有一些文章提供了更多的可能性(但是它表明沒有什麼能夠從PostgreSQL上傳GENERATE_SERIES()):https://blog.jooq.org/2013/11/19/how-to-create-a-range-from-1 -to-10-in-sql/ – Dodecaphone