Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Rufen Sie die Eltern-Kind-Hierarchie aus einer selbstreferenzierenden MySQL-Tabelle ab

MySQL unterstützt keine rekursiven Abfragen. Wenn also ein untergeordnetes Element untergeordnete Elemente haben kann, gibt es keine Möglichkeit, eine solche Abfrage zu formulieren. Andernfalls sollte diese Abfrage die Zeilen in der von Ihnen benötigten Reihenfolge zurückgeben:

SELECT * FROM tablename
ORDER BY
  CASE WHEN parent_id=0 THEN id ELSE parent_id END,
  id

Siehe fiddle hier . Der Trick besteht darin, Zeilen nach id zu ordnen ob es sich um ein übergeordnetes Element handelt oder durch parent_id wenn es ein Kind ist, und dann nach id .