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

Chọn cha mẹ và con từ cùng một bảng

Bạn nên sử dụng CTE đệ quy (Biểu thức bảng chung) cho việc này:

-- define the recursive CTE and give it a name
;WITH Hierarchy AS
(
    -- "anchor" - top-level rows to select, here those with ManagerId = 0
    SELECT EmpId, EmpName, NULL AS 'MgrId', CAST(NULL AS NVARCHAR(50)) AS 'MgrName', 1 AS 'Level'
    FROM dbo.Emp
    WHERE ManagerId = 0

    UNION ALL

    -- recursive part - join an employee to its manager via ManagerId -> mgr.EmpId
    SELECT e.EmpId, e.EmpName, mgr.EmpId, mgr.EmpName, mgr.Level + 1 AS 'Level'
    FROM dbo.Emp e
    INNER JOIN Hierarchy mgr ON e.ManagerId = mgr.EmpId
)
SELECT * FROM Hierarchy


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách sử dụng lồng nhau bằng C # và SQL Server

  2. Cách sử dụng SQL Server Hàm T-SQL SUM:5 Trường hợp sử dụng

  3. SQL Server:chênh lệch số ngày cho hai ngày trong các hàng riêng biệt

  4. Cách xử lý nhiều đối tượng bằng cách sử dụng Object Explorer Chi tiết Windows trong SSMS - Hướng dẫn sử dụng SQL Server / TSQL Phần 22

  5. Cách đặt Tên ứng dụng trong chuỗi kết nối ADODB