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

Xóa các cây con trùng lặp khỏi truy vấn CONNECT-BY trong oracle

Nút gốc trong hệ thống phân cấp hữu hạn phải luôn được biết đến Theo định nghĩa: http://en.wikipedia .org / wiki / Tree_ Structure nút gốc là nút không có cha. Để kiểm tra xem một nút đã cho có phải là nút gốc hay không, hãy lấy "parent_id" và kiểm tra trong bảng xem có tồn tại một bản ghi với id này hay không. Truy vấn có thể trông giống như sau:

SELECT id,parent_id,
  CONNECT_BY_ISLEAF leaf,
  LEVEL,
  SYS_CONNECT_BY_PATH(id, '/') Path,
  SYS_CONNECT_BY_PATH(parent_id, '/') Parent_Path
FROM tree_hierarchy th
WHERE CONNECT_BY_ISLEAF<>0
  CONNECT BY PRIOR id = PARENT_id
START WITH not exists (
      select 1 from tree_hierarchy th1 
      where th1.id = th.parent_id
  )
ORDER SIBLINGS BY ID;


  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 thêm Bộ khóa (UniqueID) vào bảng Tạm thời để CHÈN sau này vào Bảng sản xuất

  2. Cách nhanh chóng để tạo các chuỗi được nối trong Oracle

  3. Hàm CHR () trong Oracle

  4. Tham số ngày PL / SQL động với giá trị thời gian được giữ lại

  5. Trước đó có nghĩa là gì trong Oracle?