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

SLET rekursiv PostgreSQL

WITH RECURSIVE all_uploads (codigo, parent, ext, main) AS (
 SELECT ut1.codigo, ut1.codigo_upload_temp_pai AS parent,
  ut1.codigo_extensao AS ext, ut1.codigo AS main
 FROM upload_temp ut1
 WHERE ut1.codigo = 486

 UNION ALL

SELECT ut2.codigo, ut2.codigo_upload_temp_pai AS parent,
 ut2.codigo_extensao AS ext, au.main
FROM upload_temp ut2
JOIN all_uploads au ON au.parent = ut2.codigo
)
DELETE FROM upload_temp WHERE codigo IN (SELECT codigo FROM all_uploads);

Du skal sætte udgangspunktet i den indledende markering (inde i med), ELLER du skal på en eller anden måde lave en pseudokolonne, der repræsenterer toppen af ​​"træet", det er det samme for hver række i hele træet. At sætte "toppen hvor" i det indledende valg inde i med er den nemmere løsning.




  1. Sammenfletning af datafiler med Statistica, del 2

  2. SQLAlchemy Bestem, om der findes en unik begrænsning

  3. Oracle-datosammenligning i where-klausulen

  4. søgeside, der giver brugeren mulighed for at vælge mellem tre typer ved hjælp af php mysql