Postgres hat keine hierarchischen Abfragen . Kein CONNECT BY
, also auch kein LEVEL
.
Das zusätzliche Modul tablefunc stellt die Funktion connetby()
zur Verfügung fast das gleiche. Siehe:
Oder Sie können ähnliche Dinge mit einem standardmäßigen rekursiven CTE und einem% co_de tun % Spalte, die bei jeder Rekursion erhöht wird.
Diese Abfrage in Oracle:
.. kann zu diesem rekursiven CTE in Postgres übersetzt werden:
%Vor% Die Funktionalität, die Sie mit Verbinden mit , Beginnt mit und einem level Indikator verwenden, ist verfügbar, wenn Sie
Ich habe alle Details zu einer ähnlichen Frage gegeben.
Stackoverflow Connect Nach Antwort
Ja, Postgres unterstützt "LEVEL" wie Oracle.
Aber wie die anderen Antworten darauf hinweisen, müssen Sie die Erweiterung tablefunc laden.
Wenn Sie Administratorzugriff auf Ihre Postgres-Datenbank haben, können Sie sie mit folgendem laden:
CREATE EXTENSION IF NOT EXISTS tablefunc;
Weitere Informationen finden Sie in den Dokumenten
Hier ist ein Beispiel aus dem echten Leben von connectby aus einer unserer Apps. Wir verwenden es, um alle Personen zu finden, die über ihren Berichtsbaum an einen Manager berichten.
%Vor%Und es gibt Ergebnisse wie folgt zurück. Hier können Sie die Ebene und auch die gesamte Hierarchie als String sehen.
%Vor%Tags und Links oracle postgresql connect-by hierarchical-query recursive-cte