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.