Parece que lo que quieres es un dummy rowset
.
En MySQL
, es imposible sin tener una mesa.
La mayoría de los principales sistemas proporcionan una forma de hacerlo:
-
En
Oracle
:SELECT level FROM dual CONNECT BY level <= 10
-
En
SQL Server
:WITH q AS ( SELECT 1 AS num UNION ALL SELECT num + 1 FROM q WHERE num < 10 ) SELECT * FROM q
-
En
PostgreSQL
:SELECT num FROM generate_series(1, 10) num
MySQL
carece de algo así y esto es un serio inconveniente.
Escribí un script simple para generar datos de prueba para las tablas de muestra en las publicaciones de mi blog, tal vez sea útil:
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
$$
Llamas al procedimiento y la tabla se llena con los números.
Puedes reutilizarlo durante la duración de la sesión.