Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Uzyskaj Root rodzica dziecka w tabeli hierarchicznej

DECLARE @id INT = 6
;WITH parent AS
(
    SELECT id, parentId, 1 AS [level] from tbl WHERE id = @id
    UNION ALL 
    SELECT t.id, t.parentId, [level] + 1 FROM parent
    INNER JOIN tbl t ON t.id =  parent.parentid
)
SELECT TOP 1 id FROM parent ORDER BY [level] DESC

Odpowiedź @TechDo zakłada, że ​​najniższym ID będzie rodzic. Jeśli nie chcesz na tym polegać, powyższe zapytanie zostanie posortowane według głębokości.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Pobierz listę z wartościami początkowymi i końcowymi z tabeli dat i godzin

  2. Jak wybrać indeks klastrowy w SQL Server?

  3. Używanie JDBC, gdy nazwa serwera zawiera ukośnik odwrotny (localhost\TESTDATA)

  4. Jak utworzyć indeks nieklastrowy w Create Table?

  5. Korzystanie z wyszukiwania pełnotekstowego w SQL Server 2008 w wielu tabelach, kolumnach