Изглежда, че това, което искате, е 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
$$
Извиквате процедурата и таблицата се запълва с числата.
Можете да го използвате повторно по време на сесията.