首頁 >資料庫 >mysql教程 >如何透過單一查詢檢索 MySQL 中特定目錄的所有子目錄?

如何透過單一查詢檢索 MySQL 中特定目錄的所有子目錄?

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-05 13:53:44809瀏覽

How to Retrieve All Subdirectories of a Specific Directory in MySQL with a Single Query?

使用MySQL 遞歸在單一查詢中擷取子目錄

考慮一個類似目錄結構的表:

folders_table
-----------------------
- INT id_folder
- INT id_folder_parent
- VARCHAR folder_name

挑戰在於使用單一SELECT檢索特定目錄的所有子目錄

解決方案:

傳統的資料庫結構無法有效率地支援此查詢。要啟用它,必須修改資料庫結構。具體來說,引入了自引用關係來表示層次結構。

逐步說明:
  1. 新增欄位 left_index 來追蹤項目的順序相同層級。
  2. 新增欄位 right_index,以追蹤整個專案中的專案順序
  3. 使用下列建立一個新資料表:id_folder、id_folder_parent、left_index、right_index、folder_name。

修改完成後,可以使用以下查詢來擷取一次查詢中任意深度的樹:
SELECT *
FROM folders_table
WHERE left_index > (SELECT left_index FROM folders_table WHERE id_folder = <parent_folder_id>)
AND right_index < (SELECT right_index FROM folders_table WHERE id_folder = <parent_folder_id>)
ORDER BY left_index

資源進一步探索:

  • [在資料庫中存儲分層資料(SitePoint)](https://www.sitepoint.com/hierarchical-data-database/)
  • [管理分層資料MySQL](https://www.qrypt.co.uk/blog/managing-hierarchical-data-in-mysql)

以上是如何透過單一查詢檢索 MySQL 中特定目錄的所有子目錄?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn