J'ai trouvé assez difficile d'obtenir une plage de nombres sous forme de lignes MySQL
.
Par exemple, la plage 1-5 est atteinte par:
SELECT 1
UNION
SELECT 2
UNION
SELECT 3
UNION
SELECT 4
UNION
SELECT 5
aura pour résultat:
1 2 3 4 5
pour 0-99 je peux croiser joindre deux tables 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
J'en ai marre d'écrire tout ça UNION
s et de chercher un moyen de réduire le code.
Des idées sur la façon de jouer au golf (par exemple une plage de 0 à 1 000 000) dans MySQL ou toute syntaxe SQL?
Des points supplémentaires sont accordés pour:
- déclaration unique
- pas de procédures
- pas de variables
- aucune instruction DDL
- uniquement les instructions DQL
generate_series()
. Nous avons ici quelques exemples d'utilisation .