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

Truy vấn đệ quy SQL lấy tất cả tổ tiên của một mục

with name_tree as (
   select id, parent_id, name
   from the_unknown_table
   where id = 1 -- this is the starting point you want in your recursion
   union all
   select c.id, c.parent_id, c.name
   from the_unknown_table c
     join name_tree p on p.parent_id = c.id  -- this is the recursion
) 
select *
from name_tree
where id <> 1; -- exclude the starting point from the overall result

SQLFiddle: http://sqlfiddle.com/#!3/87d0c/1



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Xây dựng mệnh đề WHERE động trong thủ tục được lưu trữ

  2. Thu thập số lượng từ một truy vấn SQL

  3. Ràng buộc SQL DEFAULT để Chèn cột có giá trị mặc định vào bảng SQL Server

  4. Khóa chính tự động tăng dần trong SQL Server Management Studio 2012

  5. Không thể sử dụng nhà cung cấp OLE DB 'Microsoft.Jet.OLEDB.4.0' cho các truy vấn phân tán