nectnect By語句可以幫助我們查詢樹形結構數據,并且可以按照指定的順序進行排序。
下面我們以一個部門樹為例,來演示如何。
部門表結構如下:
```ent` (t(11) NOT NULL AUTO_INCREMENT,ame` varchar(50) NOT NULL,tt(11) DEFAULT NULL,
PRIMARY KEY (`id`)noDBb4;
amet_id為父級部門id。
現在,我們需要查詢出所有部門的樹形結構,并且按照部門名稱進行排序。我們可以使用如下SQL語句:
SELECT ametametame, ameame
FROM
(SELECT amet_id, t_id = @p, @level + 1, 1) AS level,
@p := id
FROM ent p
ORDER BY t_id, id) AS T1
LEFT JOIN entt_id = T2.id
ORDER BY ame;
這個SQL語句的主要思路是:
- 使用變量@p和@level來計算每個部門的層級和全路徑名稱。
- 使用LEFT JOIN連接部門表自身,查詢每個部門的父級部門名稱。
- 按照全路徑名稱進行排序。
其中,REPEAT(' ', T1.level-1)表示在全路徑名稱前面添加空格,使得每個部門在樹形結構中的位置更加清晰。
運行以上SQL語句,我們可以得到如下結果:
```amettameame
1 總經辦 NULL NULL 總經辦
2 財務部 1 總經辦 財務部
3 人事部 1 總經辦 人事部
4 開發部 1 總經辦 開發部
5 前端部 4 開發部 前端部
6 后端部 4 開發部 后端部
7 測試部 4 開發部 測試部
以上結果就是我們所期望的部門樹形結構。
nectnect By語句,來查詢出我們所需要的樹形結構數據。