sql >> Databasteknik >  >> RDS >> Sqlserver

Gå igenom utan markör i SQL Server 2005

Du kan använda SQL 2005 CTE för att få SQL-motorn att göra det rekursivt.

En uppräkning av grundläggande tillvägagångssätt finns på http://blogs.msdn.com/anthonybloesch/archive/2006/02/15/Hierarchies-in-SQL-Server-2005.aspx

Celko har också en träd i SQL-bok som täcker allt detta till n:e graden.

Eller så kan du brute force det genom att välja varje nivå i en lokal tabellvariabel och sedan loopa, infoga underordnade med ett urval, tills ditt @@ROWCOUNT är noll (dvs. du hittar inga fler barn). Om du inte har mycket data är detta lätt att koda, men du antydde att du letar efter prestanda genom att säga att du inte vill ha en markör.



  1. Class.forName(com.mysql.jdbc.Driver).newInstance()

  2. Hur uppstår databaskorruption?

  3. MySQL dumpa i CSV-textfiler med kolumnnamn överst?

  4. Hur infogar man data i två olika tabeller?