Zdá se, že to, co chcete, je dummy rowset
.
V MySQL
, je to nemožné bez stolu.
Většina hlavních systémů poskytuje způsob, jak to udělat:
-
V
Oracle
:SELECT level FROM dual CONNECT BY level <= 10
-
V
SQL Server
:WITH q AS ( SELECT 1 AS num UNION ALL SELECT num + 1 FROM q WHERE num < 10 ) SELECT * FROM q
-
V
PostgreSQL
:SELECT num FROM generate_series(1, 10) num
MySQL
něco takového postrádá a to je vážná nevýhoda.
Napsal jsem jednoduchý skript pro generování testovacích dat pro vzorové tabulky v mých příspěvcích na blogu, možná se bude hodit:
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
$$
Zavoláte proceduru a tabulka se zaplní čísly.
Během trvání relace jej můžete znovu použít.