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

Truy vấn đệ quy trong SQL Server

Hãy thử điều này:

;WITH CTE
AS
(
    SELECT DISTINCT
        M1.Product_ID Group_ID,
        M1.Product_ID
    FROM matches M1
        LEFT JOIN matches M2
            ON M1.Product_Id = M2.matching_Product_Id
    WHERE M2.matching_Product_Id IS NULL
    UNION ALL
    SELECT
        C.Group_ID,
        M.matching_Product_Id
    FROM CTE C
        JOIN matches M
            ON C.Product_ID = M.Product_ID
)
SELECT * FROM CTE ORDER BY Group_ID

Bạn có thể sử dụng OPTION(MAXRECURSION n) để kiểm soát độ sâu đệ quy.

SQL FIDDLE DEMO



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Với (nolock) trong SQL Server là gì?

  2. Cách thiết lập Thư cơ sở dữ liệu trong SQL Server (SSMS)

  3. Khôi phục cơ sở dữ liệu SQL một cách dễ dàng - Hướng dẫn từng bước

  4. Cách khắc phục:“SQLServerAgent hiện không chạy…”

  5. Tuân thủ GDPR và Máy chủ SQL của bạn