Il semble que ce que vous voulez est un dummy rowset
.
En MySQL
, c'est impossible sans table.
La plupart des principaux systèmes offrent un moyen de le faire :
-
Dans
Oracle
:SELECT level FROM dual CONNECT BY level <= 10
-
Dans
SQL Server
:WITH q AS ( SELECT 1 AS num UNION ALL SELECT num + 1 FROM q WHERE num < 10 ) SELECT * FROM q
-
Dans
PostgreSQL
:SELECT num FROM generate_series(1, 10) num
MySQL
manque quelque chose comme ça et c'est un sérieux inconvénient.
J'ai écrit un script simple pour générer des données de test pour les exemples de tableaux dans mes articles de blog, peut-être qu'il sera utile :
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
$$
Vous appelez la procédure et le tableau se remplit avec les nombres.
Vous pouvez le réutiliser pendant la durée de la session.