Achei bastante difícil obter um intervalo de números como linhas MySQL
.
Por exemplo, o intervalo de 1 a 5 é alcançado por:
SELECT 1
UNION
SELECT 2
UNION
SELECT 3
UNION
SELECT 4
UNION
SELECT 5
vai resultar em:
1 2 3 4 5
para 0-99 eu posso cruzar duas tabelas de 0-9:
CREATE TABLE nums as
SELECT 0 as num
UNION
SELECT 1
UNION
SELECT 2
UNION
SELECT 3
UNION
SELECT 4
UNION
SELECT 5
UNION
SELECT 6
UNION
SELECT 7
UNION
SELECT 8
UNION
SELECT 9
;
Select n.num*10+nums.num v
From nums n cross join nums
Estou cansado de escrever tudo isso UNION
e procurar uma maneira de reduzir o código.
Alguma idéia de como jogar golfe (por exemplo, faixa de 0 a 1.000.000) no MySQL ou em qualquer sintaxe SQL?
Pontos extras são dados para:
- declaração única
- sem procedimentos
- sem variáveis
- sem instruções DDL
- apenas instruções DQL
generate_series()
. Temos alguns exemplos de uso aqui.