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

Oracle CONNECT BY đệ quy con với truy vấn cha, bao gồm cha mẹ cuối cùng tự tham chiếu

Tôi nhận được kết quả đó bằng cách sử dụng WITH mệnh đề.

WITH REC_TABLE ( ID, PARENT_ID)
AS
(
    --Start WITH 
    SELECT ID, PARENT_ID
    FROM table
    WHERE ID='C'

    UNION ALL
    --Recursive Block
    SELECT T.ID, T.PARENT_ID
    FROM table T 
    JOIN REC_TABLE R
    ON R.PARENT_ID=T.ID
    AND R.PARENT_ID!=R.ID   --NoCycle rule
)
SELECT *
FROM REC_TABLE;

Và dường như nó cũng hoạt động theo cách đó.

select id, parent_id
from T
START WITH id = 'C'
CONNECT BY id = PRIOR parent_id and parent_id!= prior id;
--                                  ^^^^^^^^^^^^^^^^^^^^
--                                      break cycles

Hy vọng nó sẽ hữu ích.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tạo gói SSIS - Để sao chép dữ liệu từ Oracle sang SQL Server

  2. Làm thế nào để có được quý từ ngày trong Oracle?

  3. Hành vi autoCommit mặc định của kết nối JDBC

  4. tạo tập lệnh SQL

  5. sqldeveloper xuất ra kết quả chính xác cho số đếm (*) trong khi sqlplus cho kết quả bằng không