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

Mengambil daftar tertaut di database MySQL

Beberapa merek database (misalnya Oracle, Microsoft SQL Server) mendukung sintaks SQL tambahan untuk menjalankan "kueri rekursif" tetapi MySQL tidak mendukung solusi semacam itu.

Masalah yang Anda gambarkan sama dengan merepresentasikan struktur pohon dalam database SQL. Anda hanya memiliki pohon yang panjang dan kurus.

Ada beberapa solusi untuk menyimpan dan mengambil struktur data semacam ini dari RDBMS. Lihat beberapa pertanyaan berikut:

Karena Anda menyebutkan bahwa Anda ingin membatasi "kedalaman" yang dikembalikan oleh kueri, Anda dapat mencapainya saat menanyakan daftar dengan cara ini:

SELECT * FROM mytable t1
 LEFT JOIN mytable t2 ON (t1.next_id = t2.id)
 LEFT JOIN mytable t3 ON (t2.next_id = t3.id)
 LEFT JOIN mytable t4 ON (t3.next_id = t4.id)
 LEFT JOIN mytable t5 ON (t4.next_id = t5.id)
 LEFT JOIN mytable t6 ON (t5.next_id = t6.id)
 LEFT JOIN mytable t7 ON (t6.next_id = t7.id)
 LEFT JOIN mytable t8 ON (t7.next_id = t8.id)
 LEFT JOIN mytable t9 ON (t8.next_id = t9.id)
 LEFT JOIN mytable t10 ON (t9.next_id = t10.id);

Ini akan bekerja seperti molase, dan hasilnya akan kembali semua dalam satu baris (per daftar tertaut), tetapi Anda akan mendapatkan hasilnya.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cara Mengembalikan Hasil Kueri sebagai Daftar Dipisahkan Koma di MySQL

  2. Tabel pivot dinamis MySQL

  3. Bagaimana cara mendapatkan banyak hitungan dengan satu kueri SQL?

  4. Bagaimana Fungsi LOAD_FILE() Bekerja di MySQL

  5. Temukan catatan dari satu tabel yang tidak ada di tabel lain