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

MySQL cha con một lựa chọn truy vấn

Bạn cần một phép nối đệ quy mà mysql không hỗ trợ. Điều duy nhất bạn có thể làm là xác định mức độ sâu tối đa (trường hợp của bạn là 1 vì bạn có p-> c) và với điều này, bạn có thể xác định số lượng liên kết cần thiết:

mức độ sâu tối đa =số lượng tự tham gia :

SELECT
    p.id as parent_id,
    p.name as parent_id,
    c1.id as child_id,
    c1.name as child_name
FROM 
    my_table p
LEFT JOIN my_table c1
    ON c1.parent = p.id
WHERE
    p.parent=0

Ví dụ:nếu mức độ sâu tối đa của bạn là 3, bạn sẽ cần 3 tự tham gia:

SELECT
    p.id as parent_id,
    p.name as parent_id,
    c1.id as child_id_1,
    c1.name as child_name_1,
    c2.id as child_id_2,
    c2.name as child_name_2,
    c3.id as child_id_3,
    c3.name as child_name_3
FROM 
    my_table p
LEFT JOIN my_table c1
    ON c1.parent = p.id
LEFT JOIN my_table c2
    ON c2.parent = c1.id
LEFT JOIN my_table c3
    ON c3.parent = c2.id
WHERE
    p.parent=0


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQLi có xác minh chứng chỉ máy chủ theo mặc định khi sử dụng SSL không?

  2. PDO ::bindParam trong một vòng lặp foreach, tất cả các giá trị đang được đặt giống nhau?

  3. Đá quý mysql2 được biên dịch cho thư viện máy khách mysql sai

  4. Android Room - Xử lý danh sách các đối tượng trong một đối tượng và kết quả truy vấn

  5. Lưu trữ web miễn phí với hỗ trợ PHP