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

ORACLE Kết nối theo mệnh đề tương đương trong SQL Server

SQL Server 2005+ tương đương với CONNECT BY của Oracle cú pháp truy vấn phân cấp là sử dụng một CTE đệ quy. SQL Server 2008 đã thêm HierarchyID. Đây là một ví dụ về CTE đệ quy:

WITH EmployeeHierarchy (EmployeeID, LastName, FirstName, ReportsTo, HierarchyLevel) AS (
   SELECT EmployeeID,
          LastName,
          FirstName,
          ReportsTo,
          1 as HierarchyLevel
     FROM Employees
    WHERE ReportsTo IS NULL
   UNION ALL
   -- Recursive step
   SELECT e.EmployeeID,
          e.LastName,
          e.FirstName,
          e.ReportsTo,
          eh.HierarchyLevel + 1 AS HierarchyLevel
     FROM Employees e
     JOIN EmployeeHierarchy eh ON e.ReportsTo = eh.EmployeeID)
  SELECT *
    FROM EmployeeHierarchy
ORDER BY HierarchyLevel, LastName, FirstName 

Googling "CTE phân cấp" và / hoặc "CTE đệ quy" sẽ trả về nhiều kết quả. Tôi lấy truy vấn ví dụ từ 4GuysFromRolla.com.

CTE đệ quy hiện là tiêu chuẩn ANSI - cú pháp không được hỗ trợ cho đến khi Oracle 11g như tôi hiể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. Lược đồ mẫu trên GitHub

  2. Cấu hình kết nối giữa máy khách và máy chủ Oracle 10g

  3. Làm thế nào để sử dụng một hằng gói trong câu lệnh SQL SELECT?

  4. Kết nối chuỗi tổng hợp trong Oracle 10g

  5. Có một chức năng để tách một chuỗi trong PL / SQL?