sql >> Database teknologi >  >> RDS >> Sqlserver

Gå igennem uden markør i SQL Server 2005

Du kan bruge SQL 2005 CTE'er til at få SQL-motoren til at gøre det rekursivt.

En opremsning af grundlæggende tilgange er på http://blogs.msdn.com/anthonybloesch/archive/2006/02/15/Hierarchies-in-SQL-Server-2005.aspx

Celko har også en træer i SQL-bog, som dækker alt dette i n'te grad.

Eller du kan brute force det ved at vælge hvert niveau i en lokal tabelvariabel og derefter looping, indsætte børn med en markering, indtil dit @@ROWCOUNT er nul (dvs. du finder ikke flere børn). Hvis du ikke har mange data, er dette nemt at kode, men du antydede, at du leder efter ydeevne ved at sige, at du ikke vil have en markør.



  1. Udvikling af fejltolerance i PostgreSQL:Tidsrejse

  2. Oracle:Udtræk grafisk databaserepræsentation

  3. Indsæt efter afkortning start fra 1; men indsæt efter sletning genoptages fra forrige værdi

  4. Loop indtil adgangskoden er unik