sql >> Database teknologi >  >> RDS >> PostgreSQL

Har PostgreSQL en pseudo-kolonne som LEVEL i Oracle?

Postgres har ikke hierarkiske forespørgsler . Ingen CONNECT BY , derfor heller ingen LEVEL .

Det ekstra modul tablefunc giver funktionen connectby() gør næsten det samme. Se:

Eller du kan gøre lignende ting med en standard rekursiv CTE og et level kolonne, der øges med hver rekursion.
Denne forespørgsel i Oracle:

SELECT employee_id, last_name, manager_id, LEVEL
FROM   employees
CONNECT BY PRIOR employee_id = manager_id;
 

.. kan oversættes til denne rekursive CTE i Postgres:

WITH RECURSIVE cte AS ( SELECT employee_id, last_name, manager_id, 1 AS level FROM employees UNION ALL SELECT e.employee_id, e.last_name, e.manager_id, c.level + 1 FROM cte c JOIN employees e ON e.manager_id = c.employee_id ) SELECT * FROM cte;

  1. Django admin List Display + ForeignKey =Tom ændringsliste

  2. Opret en inline SQL-tabel på farten (for en ekskluderende venstre join)

  3. Samtidighedsscenarier med INSERT'er

  4. SQL Server - indre joinforbindelse ved opdatering