Nummernkreise mit SQL generieren
Müssen Sie eine Zahlenfolge zwischen zwei angegebenen Werten (z. B. 1000 und 1050) in einer SQL-Datenbank erstellen? Dieser Artikel demonstriert effiziente Methoden mit VALUES
- und JOIN
-Operationen.
Die Kernidee besteht darin, mit VALUES
eine Reihe von Zahlen zu generieren und diese dann mit JOIN
zu einem größeren Bereich zusammenzufassen. Dieser Ansatz lässt sich leicht skalieren, um durch Erweitern der Abfrage Hunderttausende Zeilen zu generieren.
Hier ist eine kompakte Lösung:
<code class="language-sql">WITH x AS (SELECT n FROM (VALUES (0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) v(n)) SELECT ROW_NUMBER() OVER (ORDER BY (SELECT NULL)) FROM x ones, x tens, x hundreds, x thousands ORDER BY 1</code>
Eine explizitere Methode ist:
<code class="language-sql">SELECT ones.n + 10*tens.n + 100*hundreds.n + 1000*thousands.n FROM (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) ones(n), (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) tens(n), (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) hundreds(n), (VALUES(0),(1),(2),(3),(4),(5),(6),(7),(8),(9)) thousands(n) ORDER BY 1</code>
Beide Beispiele können durch Hinzufügen einer WHERE
-Klausel angepasst werden, um bestimmte Bereiche zu generieren. Erwägen Sie bei häufiger Verwendung die Erstellung einer Tabellenwertfunktion zur Wiederverwendbarkeit.
Das obige ist der detaillierte Inhalt vonWie kann ich mit SQL eine Zahlenfolge zwischen zwei gegebenen Werten generieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!