Heim > Datenbank > MySQL-Tutorial > Wie kann SQL einen Zahlenbereich zwischen zwei angegebenen Werten generieren?

Wie kann SQL einen Zahlenbereich zwischen zwei angegebenen Werten generieren?

Linda Hamilton
Freigeben: 2025-01-20 03:26:09
Original
326 Leute haben es durchsucht

How Can SQL Generate a Range of Numbers Between Two Specified Values?

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>
Nach dem Login kopieren

So geht's:

Die Lösung:

Diese Methode nutzt mehrere JOINen 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>
Nach dem Login kopieren

Erklärung:

  1. 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.

  2. Filtern des Bereichs: Die WHERE-Klausel filtert die Ergebnisse aus dem CTE, sodass nur Zahlen zwischen 1000 und 1050 (einschließlich) enthalten sind.

  3. 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>
Nach dem Login kopieren

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!

Quelle:php.cn
Erklärung dieser Website
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
Neueste Artikel des Autors
Beliebte Tutorials
Mehr>
Neueste Downloads
Mehr>
Web-Effekte
Quellcode der Website
Website-Materialien
Frontend-Vorlage