連番の作り方

「達人に学ぶ SQL徹底指南書」の1-9の連番の作り方を読んだまとめ。

sqlは集合指向の言語なので、「1から100までの連続した数字の生成」のような数列の集合の生成には向いていない。
が、向いていないが出来ないことはない。

下準備として、1 ~ 9までの数字が入ったテーブルが必要になる。(と本には書いてあったが、今だと関数とかでできそうな気もするが未確認。)
そのテーブルに対して、交差結合しながら値を足し合わせることで簡単に連番ができる。(numbersが1〜9までの数字が入ったテーブルという想定。)

select n1.num + (n2.num * 10) as seq
from numbers n1 cross join numbers n2
order by seq

これで、0 ~ 99までの連番を作ることが可能。
桁を増やしたければ交差結合にもう一つnumbersを追加して、select句に(n3.num * 100)みたいに追加すれば良い。
また、特定の区間だけを取り出したければ、where句を追加してbetweenで範囲を指定する。(この時、~ where seq between ~ とは出来ないので注意。)

本にもあるように、この連番をさらにビューとして追加すれば非常に使いやすくなると思う。


達人に学ぶ SQL徹底指南書 (CodeZine BOOKS)
ミック
翔泳社
売り上げランキング: 10,012