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

Получаване на йерархични данни от саморефериращи се таблици

Ако базата данни е SQL 2005 / 2008, тогава...

Най-лесният начин да получите това е да използвате CTE (Common Table Expression), който е проектиран да рекурсира.

 WITH myCTE (Item_id, Depth)
 AS
 (
    Select Item_ID, 0 as Depth From yourTable where Item_Parent=0
    Union ALL
    Select yourTable.Item_ID, Depth + 1 
    From yourTable 
    inner join myCte on yourTable.item_Parent = myCte.Item_Id
 )

 Select Item_id, Depth from myCTE

Резултатът е както следва:

Item_Id  Depth
    1   0
    2   0
    3   1
    4   1
    5   2

От това можете да го форматирате както желаете.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. задаване на целевата версия на базата данни за миграция на mysql Workbench

  2. Намерете стойности, които не съдържат числа в MySQL

  3. Разлика между лявото съединение и лявото външно съединение

  4. Каква е разликата между MyISAM и InnoDB?

  5. Как да намерите ASCII кода за даден символ в MySQL