必要なのはdummy rowset
のようです 。
MySQL
で 、テーブルがなければ不可能です。
ほとんどの主要なシステムはそれを行う方法を提供します:
-
Oracle
内 :SELECT level FROM dual CONNECT BY level <= 10
-
SQL Server
内 :WITH q AS ( SELECT 1 AS num UNION ALL SELECT num + 1 FROM q WHERE num < 10 ) SELECT * FROM q
-
PostgreSQL
で :SELECT num FROM generate_series(1, 10) num
MySQL
このようなものが欠けており、これは重大な欠点です。
ブログ投稿のサンプルテーブルのテストデータを生成するための簡単なスクリプトを作成しました。おそらくそれが役立つでしょう:
CREATE TABLE filler (
id INT NOT NULL PRIMARY KEY AUTO_INCREMENT
) ENGINE=Memory;
CREATE PROCEDURE prc_filler(cnt INT)
BEGIN
DECLARE _cnt INT;
SET _cnt = 1;
WHILE _cnt <= cnt DO
INSERT
INTO filler
SELECT _cnt;
SET _cnt = _cnt + 1;
END WHILE;
END
$$
プロシージャを呼び出すと、テーブルに番号が入力されます。
セッション中は再利用できます。