Ho trovato abbastanza difficile ottenere un intervallo di numeri come righe dentro MySQL
.
Ad esempio, l'intervallo 1-5 è raggiunto da:
SELECT 1
UNION
SELECT 2
UNION
SELECT 3
UNION
SELECT 4
UNION
SELECT 5
comporterà:
1 2 3 4 5
per 0-99 posso incrociare unire due tabelle 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
Sono stanco di scrivere tutti questi messaggi UNION
e cercare un modo per ridurre il codice.
Qualche idea su come giocare a golf (ad esempio 0-1.000.000 di range) in MySQL o qualsiasi sintassi SQL?
Vengono assegnati punti extra per:
- singola dichiarazione
- nessuna procedura
- nessuna variabile
- nessuna istruzione DDL
- solo istruzioni DQL
generate_series()
. Abbiamo un paio di esempi di utilizzo qui.