Det ser ud til, at det du ønsker er et dummy rowset
.
I MySQL
, det er umuligt uden at have et bord.
De fleste større systemer giver en måde at gøre det på:
-
I
Oracle
:SELECT level FROM dual CONNECT BY level <= 10
-
I
SQL Server
:WITH q AS ( SELECT 1 AS num UNION ALL SELECT num + 1 FROM q WHERE num < 10 ) SELECT * FROM q
-
I
PostgreSQL
:SELECT num FROM generate_series(1, 10) num
MySQL
mangler noget som dette, og dette er en alvorlig ulempe.
Jeg skrev et simpelt script til at generere testdata for eksempeltabellerne i mine blogindlæg, måske vil det være nyttigt:
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
$$
Du ringer til proceduren, og bordet bliver fyldt med tallene.
Du kan genbruge det under sessionens varighed.