Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Nhận root cha mẹ của con trong bảng phân cấp

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

Câu trả lời của @ TechDo giả định ID thấp nhất sẽ là cha mẹ. Nếu bạn không muốn dựa vào điều này thì truy vấn trên sẽ sắp xếp theo độ sâu.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Khi nào và cách sử dụng mệnh đề PARTITION BY trong SQL

  2. Kích hoạt và cập nhật thành một hàng trong SQL Server sau khi nó được cập nhật

  3. Đọc nhật ký giao dịch SQL Server

  4. Các chỉ mục được phân nhóm có phải là duy nhất không?

  5. Câu lệnh PRINT trong T-SQL