Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Anak-anak induk MySQL satu pilihan kueri

Anda memerlukan gabungan rekursif yang tidak didukung mysql. Satu-satunya hal yang dapat Anda lakukan adalah menentukan tingkat kedalaman maksimum (dalam kasus Anda adalah 1 karena Anda memiliki p->c) dan dengan ini Anda dapat menentukan jumlah sambungan yang diperlukan:

tingkat kedalaman maksimum =jumlah self-join :

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

Misalnya jika level kedalaman maksimum Anda adalah 3, Anda memerlukan 3 self-join:

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. Bagaimana cara mengatur MySQL untuk sementara menjadi hanya-baca melalui baris perintah?

  2. pilih 30 baris acak di mana jumlah jumlah =x

  3. Sesi MySQL Workbench tidak melihat pembaruan ke database

  4. F# Pemula:mengambil larik data dari server

  5. Bagaimana cara menambahkan fungsi levenshtein di mysql?