Mysql
 sql >> база данни >  >> RDS >> Mysql

Как мога да получа идентификатори на предшественици за произволна дълбочина на рекурсия в една SQL заявка?

SELECT c.id, b.id, a.id 
FROM T 
INNER JOIN T AS c on T.parent_id=c.id 
INNER JOIN T AS b ON c.parent_id = b.id 
INNER JOIN T as a ON b.parent_id = a.id

ако приемем, че вашата таблица е на име T. не е тествана все пак. не съм сигурен какво ще се случи, ако d няма трима родители, вероятно няма да получите нещо, може да опитате LEFT JOIN за тези случаи, за да получите NULL стойности за страхотните родители. Освен това последното JOIN не е наистина необходимо, защото можете просто да изберете b.parent_id вместо a.id, но, знаете ли, само за да задвижите шаблона;)



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Грешка:mysqladmin:неуспешно обновяване; грешка:"Неизвестна грешка"

  2. Как мога да пренебрегна разликата между главни и малки букви при търсене с mysql

  3. Как да добавя скрипт за стартиране към контейнер за докер на mysql?

  4. Как да премахнете напълно MySQL 5.7 от Windows

  5. Трябва да променя формата на датата с помощта на php