Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Nhận dữ liệu phân cấp từ các bảng tự tham chiếu

Nếu cơ sở dữ liệu là SQL 2005/2008 thì ...

Cách dễ nhất để có được điều này là sử dụng CTE (Biểu thức bảng chung) được thiết kế để đệ quy.

 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

Kết quả như sau:

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

Từ đó bạn có thể định dạng nó theo ý muốn.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Sử dụng nhãn trong mệnh đề có trong sqlachemy

  2. PDO Chèn mảng sử dụng khóa làm tên cột

  3. python MySQLDB truy vấn hết thời gian chờ

  4. Lọc cộng tác trong MySQL?

  5. Nâng cao thủ tục được lưu trữ không tương thích với sql_mode =only_full_group_by mặc dù sql_mode đang trống