Het lijkt erop dat je een dummy rowset
wilt hebben .
In MySQL
, het is onmogelijk zonder een tafel te hebben.
De meeste grote systemen bieden een manier om dit te doen:
-
In
Oracle
:SELECT level FROM dual CONNECT BY level <= 10
-
In
SQL Server
:WITH q AS ( SELECT 1 AS num UNION ALL SELECT num + 1 FROM q WHERE num < 10 ) SELECT * FROM q
-
In
PostgreSQL
:SELECT num FROM generate_series(1, 10) num
MySQL
mist zoiets en dit is een serieus nadeel.
Ik heb een eenvoudig script geschreven om testgegevens te genereren voor de voorbeeldtabellen in mijn blogposts, misschien heb je er wat aan:
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
$$
Je belt de procedure en de tafel wordt gevuld met de nummers.
Je kunt het hergebruiken tijdens de duur van de sessie.