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

Truy vấn mối quan hệ cha mẹ con cái ở cấp cao nhất

Permission is NOT NULL phải nằm trong hệ thống phân cấp, thì hàng này trở thành nút gốc cho trường hợp này. Tôi đã gắn nhãn RootID này đây

Cũng đã thêm nhiều dữ liệu mẫu hơn để hiển thị nhiều nhánh từ cùng một ParentID = 0 gốc

DECLARE @t TABLE (NodeId int, NodeName varchar(100), ParentId int, Permission int)
INSERT @t VALUES 
(1,'Node1',0,NULL),
(2,'Node2',1,1),
(3,'Node3',1,NULL),
(4,'Node4',1,NULL),
(5,'Node5',2,NULL),
(6,'Node6',5,NULL),
(7,'Node7',2,NULL),
(8,'Node1',0,NULL),
(9,'Node9',8,2),
(10,'Node10',9,NULL),
(11,'Node11',10,NULL),
(12,'Node12',11,NULL),
(13,'Node13',10,NULL),
(14,'Node14',9,NULL);

WITH CTE AS
(
    SELECT NodeId, NodeName, ParentId AS RootID FROM @t WHERE Permission IS NOT NULL
    UNION ALL
    SELECT T.NodeId, T.NodeName, CTE.RootID
    FROM @t T JOIN CTE ON T.ParentId = CTE.NodeId
)
SELECT
    *
FROM
    CTE
WHERE
    NodeName IN ('Node6', 'Node13');



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Varchar không hợp lệ cho toán tử Sum

  2. Tách Ngày thành 2 Cột (Ngày + Giờ) trong SQL

  3. Cách lưu trữ bản ghi lịch sử trong bảng lịch sử trong SQL Server

  4. Chuỗi kết nối máy chủ SQL - dấu chấm (.) Hoặc (cục bộ) hoặc (cục bộ)

  5. Đính kèm nhiều cơ sở dữ liệu bằng T-SQL