Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Pobieranie połączonej listy w bazie danych MySQL

Niektóre marki baz danych (np. Oracle, Microsoft SQL Server) obsługują dodatkową składnię SQL do uruchamiania „zapytań rekurencyjnych”, ale MySQL nie obsługuje żadnego takiego rozwiązania.

Opisywany problem jest taki sam, jak przedstawianie struktury drzewa w bazie danych SQL. Masz po prostu długie, chude drzewo.

Istnieje kilka rozwiązań do przechowywania i pobierania tego rodzaju struktury danych z RDBMS. Zobacz niektóre z następujących pytań:

Ponieważ wspomniałeś, że chcesz ograniczyć „głębokość” zwracaną przez zapytanie, możesz to osiągnąć podczas odpytywania listy w ten sposób:

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);

Będzie działać jak melasa, a wynik zostanie zwrócony w jednym wierszu (na połączoną listę), ale otrzymasz wynik.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zapowiedź ClusterControl 1.7.5:Zaawansowana konserwacja klastra i wsparcie dla PostgreSQL 12 i MongoDB 4.2

  2. Wstawianie danych za pomocą mysqli

  3. SQL SERVER 2016 – Porównanie planów wykonania

  4. MySQL SELECT DISTINCT wiele kolumn

  5. Jak wysłać e-mail z MySQL 5.1?