sql >> Databáze >  >> RDS >> PostgreSQL

ODSTRANIT rekurzivní 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);

Musíte vložit počáteční bod do počátečního výběru (uvnitř with) NEBO musíte nějak vytvořit pseudosloupec, který představuje vrchol "stromu", který je stejný pro každý řádek v celém tomto stromu. Jednodušším řešením je vložení "top where" do počátečního výběru uvnitř with.




  1. Zjistěte, které tabulky byly ovlivněny spouštěči

  2. Pořadí Mysql podle konkrétních hodnot ID

  3. Group_concat ekvivalent funkce MySQL v Oracle

  4. Virtualmin:Po změně hesla nemáte přístup k této databázi MySQL