Heim >Datenbank >MySQL-Tutorial >Wie kann ich mit SQL eine Zahlenfolge zwischen zwei gegebenen Werten generieren?

Wie kann ich mit SQL eine Zahlenfolge zwischen zwei gegebenen Werten generieren?

DDD
DDDOriginal
2025-01-20 03:06:10553Durchsuche

How Can I Generate a Sequence of Numbers Between Two Given Values Using SQL?

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!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn