使用單一遞歸查詢找出 MySQL 表中的所有父項
考慮以下 MySQL表格架構和範例資料:
| ID | TITLE | CONTROLLER | METHOD | PARENT_ID | |----|-------------------|------------|-------------------|-----------| | 1 | Dashboard | admin | dashboard | 0 | | 2 | Content | admin | content | 0 | | 3 | Modules | admin | modules | 0 | ...
挑戰:
我們的目標是使用單一記錄來尋找特定記錄的所有父記錄,即標題=“類別”的記錄SQL 查詢。
所需輸出:
id | title | controller | method | url | parent_id ---------------------------------------------------------------- 3 | Modules | admin | modules | (NULL) | 0 17 | User Modules | modules | user_module | (NULL) | 3 31 | Categories | categories | category | (NULL) | 17
解:
我們採用遞歸公用表表達式(CTE)來遍歷表層次結構並識別所需的所有祖先記錄:
WITH RECURSIVE Parents AS ( SELECT id, parent_id FROM menu WHERE id = 31 UNION ALL SELECT m.id, m.parent_id FROM Parents AS p JOIN menu AS m ON p.parent_id = m.id ) SELECT m.id, m.title, m.controller, m.method, m.url, m.parent_id FROM Parents AS p JOIN menu AS m ON p.id = m.id ORDER BY p.id DESC;
解釋:
透過執行此查詢,我們獲得所需的輸出,列出了類別記錄。
以上是如何使用單一遞歸查詢來尋找 MySQL 表中記錄的所有祖先?的詳細內容。更多資訊請關注PHP中文網其他相關文章!