の数の範囲を行として達成するのは非常に難しいことがわかりましたMySQL
。
たとえば、1〜5の範囲は以下によって達成されます。
SELECT 1
UNION
SELECT 2
UNION
SELECT 3
UNION
SELECT 4
UNION
SELECT 5
結果は次のとおりです。
1 2 3 4 5
0-99の場合、2つの0-9テーブルをクロス結合できます。
CREATE TABLE nums as
SELECT 0 as num
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 n.num*10+nums.num v
From nums n cross join nums
これらすべてを書いてUNION
、コードを縮小する方法を探しているのはうんざりです。
MySQLまたはSQL構文でそれをゴルフする方法(たとえば、0-1,000,000の範囲)はありますか?
余分なポイントが与えられます:
- 一言
- 手順なし
- 変数なし
- DDLステートメントなし
- DQLステートメントのみ
generate_series()
。ここに使用例がいくつかあります。