SQL: Zahlenfolgen zwischen zwei Werten generieren
Müssen Sie eine Liste fortlaufender Zahlen innerhalb eines bestimmten Bereichs in SQL erstellen? Dies lässt sich leicht mit einer Kombination aus dem Schlüsselwort VALUES
und den Operationen JOIN
erreichen. Nehmen wir an, Sie müssen eine Sequenz von 1000 bis 1050 generieren, jede Zahl in einer neuen Zeile:
<code>1000 1001 1002 1003 ... 1050</code>
So geht's:
Die Lösung:
Diese Methode nutzt mehrere JOIN
en einer kleinen Zahlentabelle, um eine größere Folge zu erstellen.
<code class="language-sql">WITH RECURSIVE x AS ( SELECT 0 AS n UNION ALL SELECT n + 1 FROM x WHERE n < 9999 -- Adjust upper limit as needed ) SELECT n FROM x WHERE n BETWEEN 1000 AND 1050 ORDER BY n;</code>
Erklärung:
Rekursiver CTE (Common Table Expression): Eine WITH RECURSIVE
-Anweisung erstellt eine temporäre Tabelle x
mit Zahlen von 0 aufwärts. Das UNION ALL
kombiniert die anfängliche 0 mit nachfolgenden Zahlen und erhöht sich, bis die Bedingung n < 9999
nicht mehr erfüllt ist. Passen Sie 9999
an, um die maximal generierte Anzahl zu steuern.
Filtern des Bereichs: Die WHERE
-Klausel filtert die Ergebnisse aus dem CTE, sodass nur Zahlen zwischen 1000 und 1050 (einschließlich) enthalten sind.
Reihenfolge: ORDER BY n
stellt sicher, dass die Zahlen in aufsteigender Reihenfolge angezeigt werden.
Alternative (nicht rekursiv): Für kleinere Bereiche könnte ein nicht rekursiver Ansatz einfacher sein:
<code class="language-sql">WITH x AS ( SELECT 1000 AS num UNION ALL SELECT 1001 UNION ALL SELECT 1002 UNION ALL -- ... add more numbers as needed ... SELECT 1050 ) SELECT num FROM x;</code>
Der rekursive Ansatz ist jedoch für größere Bereiche weitaus skalierbarer.
Fazit:
Diese SQL-Technik bietet eine flexible und effiziente Möglichkeit, numerische Folgen innerhalb definierter Grenzen zu generieren. Der rekursive CTE bietet Skalierbarkeit für die Generierung sehr großer Sequenzen und ist damit ein leistungsstarkes Werkzeug für verschiedene Datengenerierungsaufgaben. Denken Sie daran, die Obergrenze im rekursiven CTE (n < 9999
) anzupassen, um den gewünschten Bereich zu berücksichtigen.
Das obige ist der detaillierte Inhalt vonWie kann SQL einen Zahlenbereich zwischen zwei angegebenen Werten generieren?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!