Parece que o que você quer é um
dummy rowset
. Em
MySQL
, é impossível sem ter uma mesa. A maioria dos principais sistemas fornece uma maneira de fazer isso:
-
EmOracle
:
SELECT level FROM dual CONNECT BY level <= 10
-
EmSQL Server
:
WITH q AS ( SELECT 1 AS num UNION ALL SELECT num + 1 FROM q WHERE num < 10 ) SELECT * FROM q
-
EmPostgreSQL
:
SELECT num FROM generate_series(1, 10) num
MySQL
falta algo assim e isso é uma séria desvantagem. Eu escrevi um script simples para gerar dados de teste para as tabelas de amostra nos meus posts, talvez seja ú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
$$
Você chama o procedimento e a mesa é preenchida com os números.
Você pode reutilizá-lo durante a duração da sessão.