Heim > Datenbank > MySQL-Tutorial > Können mehrere CTEs, einschließlich rekursiver, in einer einzigen SQL-Abfrage kombiniert werden?

Können mehrere CTEs, einschließlich rekursiver, in einer einzigen SQL-Abfrage kombiniert werden?

Susan Sarandon
Freigeben: 2025-01-05 05:19:39
Original
434 Leute haben es durchsucht

Can Multiple CTEs, Including Recursive Ones, Be Combined in a Single SQL Query?

Verbinden mehrerer CTEs in einer einzigen SQL-Abfrage

Ist es möglich, mehrere Common Table Expressions (CTEs) in einer einzigen Abfrage zu kombinieren? Das Ziel besteht darin, ein Ergebnis ähnlich dem folgenden zu erzielen:

WITH cte1 AS (
...
),
WITH RECURSIVE cte2 AS (
...
),
WITH cte3 AS (
...
)
SELECT ... FROM cte3 WHERE ...
Nach dem Login kopieren

Diese Abfrage umfasst einen rekursiven CTE und zwei nicht rekursive CTEs.

Lösung:

Um mehrere CTEs in einer einzigen Abfrage zu verbinden:

  • Verwenden Sie das Schlüsselwort WITH einmal am Anfang.
  • Wenn CTEs rekursiv sind, fügen Sie das Schlüsselwort RECURSIVE einmal am Anfang hinzu, auch wenn nicht alle CTEs rekursiv sind.

Aktualisiert Abfrage:

WITH RECURSIVE
  cte1 AS (...)         -- can still be non-recursive
, cte2 AS (SELECT ...
           UNION ALL
           SELECT ...)  -- recursive term
, cte3 AS (...)
SELECT ... FROM cte3 WHERE ...
Nach dem Login kopieren

Wichtige Punkte:

  • Das Schlüsselwort RECURSIVE ermöglicht einem CTE die Selbstreferenz.
  • Mit REKURSIV, die Reihenfolge der WITH-Klauseln spielt keine Rolle.
  • CTEs, die es nicht sind auf die im äußeren SELECT verwiesen wird, wird möglicherweise nicht ausgeführt.

Das obige ist der detaillierte Inhalt vonKönnen mehrere CTEs, einschließlich rekursiver, in einer einzigen SQL-Abfrage kombiniert werden?. 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