sql >> Databasteknik >  >> RDS >> Oracle

Oracle SQL Connect By Logic

Det sista villkoret gäller inte för din data, men det är mycket viktigt att undvika oändlig rekursion.

För att illustrera detta, fundera på vad som skulle hända om du lade till ytterligare en rad i tabellen:

E40 E40

Om du börjar med E40 istället för E90 , Oracle skulle snurra till en oändlig rekursion utan EMP_ID != MANAGER_ID skick, eftersom E40 skulle ansluta tillbaka till E40 .

Observera att ett bättre sätt att skriva den här frågan är att använda NOCYCLE alternativet istället för att koda i en explicit check:

SELECT *
FROM Temp
    START WITH EMP_ID = 'E90'
    CONNECT BY NOCYCLE PRIOR EMP_ID = MANAGER_ID
ORDER BY EMP_ID



  1. MySQL i AWS EC2 - Hur skalas det?

  2. Hur hämtar jag föregående dag-poster från mysql-tabellen?

  3. php-databasinlägget fungerar inte enligt plan

  4. Returnera en lista över tabeller och vyer i SQL Server med T-SQL (sp_tables)