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

Dữ liệu phân cấp trong MySql

Như đã chỉ ra ở trên, đây không thực sự là đệ quy nhưng nếu bạn biết tối đa bạn cần phải đi bao nhiêu bước sâu, bạn có thể sử dụng một cái gì đó dọc theo những dòng này (có thể sử dụng PHP để tạo truy vấn):

Đầu tiên, tôi đặt ID cha thành NULL thay vì 0, nhưng đó là tùy chọn cá nhân.

SELECT * FROM table t1
LEFT JOIN table t2 ON t2.parent_id = t1.role_id
LEFT JOIN table t3 ON t3.parent_id = t2.role_id
WHERE t1.parent_id IS NULL

^^ tuy nhiên bạn cần phải đi sâu trong trường hợp đó.

[ bit tiếp theo không hoàn toàn liên quan ]

Sau đó, bạn có thể thao tác đầu ra một cái gì đó dọc theo các dòng sau:

SELECT
        (CASE 
        WHEN (t1.name IS NULL AND t2.name IS NULL) THEN t3.name
        WHEN (t1.name IS NULL AND t2.name IS NOT NULL) THEN t2.name
        ELSE t1.name END)  AS first,
        (CASE 
        WHEN (t1.name IS NOT NULL AND t2.name IS NOT NULL) THEN t2.name
        WHEN (t2.name IS NULL AND t3.name IS NOT NULL) THEN NULL
        ELSE t3.name END)  AS second,
        (CASE 
        WHEN (t1.name IS NOT NULL) THEN t3.name
        ELSE  NULL END)  AS third
FROM


  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 tạo bảng trong SQL - Truy vấn mẫu Postgres và MySQL

  2. Cách tìm số lượng kết nối cơ sở dữ liệu mở đang hoạt động trong H2 / MySQL

  3. Làm cách nào để truy vấn các trường chứa một văn bản nhất định trong MySQL?

  4. làm thế nào để lấy tất cả kết quả tuple mysql và chuyển đổi sang json

  5. Chèn từ MS SQL Server vào cơ sở dữ liệu MySQL