以前做過類似的查詢,是關於商品分類的,不過當時用的是mysql自定義函式裡面寫的遞迴,實現比較簡單。這裡如果只用一句sql查詢,只能利用sql變數做文章了。大致說下實現思路:
按parent_id從小到大遍歷depts所有記錄,不斷拼接@all_path變數,遍歷完之後,取最後一條記錄,3,4,7,8,6,1,:,5,2,
很顯然,上面每個根節點為0的都是分號分隔了,根據tg的id=1再次做乙個字串處理,得到1,3,4,7,8,6
最後聯合users表查詢即可
select
u.*from
depts as d,
users as u,
(select
depts_node
from
(select
@auto_id:=@auto_id + 1 as auto_id,
@all_path:=if(parent_id = 0, concat(@all_path, ':,', id, ','), replace(@all_path, concat(',', parent_id, ','), concat(',', id, ',', parent_id, ','))) as depts_node
from
depts, (select @auto_id:=0, @all_path:='') vv
order by parent_id asc) as all_depts
order by auto_id desc
limit 0 , 1) as f
where
d.dept_name = 'tg'
and find_in_set(u.dept_id,
concat(d.id,
substring_index(substring_index(f.depts_node, concat(',', d.id, ','), 1),
- 1)))
mysql是什麼 MySQL是什麼?(一)
在學習mysql之前,首先需要了解資料庫和sql。如果您已經知道資料庫和sql,那麼可以直接跳轉到下一章節的學習。1.資料庫簡介 當您拍攝 並將其上傳到微博,朋友圈等,這樣的社交網路中的帳戶時,您的 庫就有可能儲存在乙個資料庫中。當您瀏覽電子商務 購買鞋子,衣服等時,您使用購物車就是資料庫應用。資料...
mysql 死鎖是什麼 mysql死鎖是什麼意思
mysql死鎖是指兩個或多個事務在同一資源上相互占用,並請求鎖定對方占用的資源,從而導致惡性迴圈。innodb儲存引擎能檢測到死鎖的迴圈依賴並立即返回乙個錯誤。只有部分或完全回滾其中乙個事務,才能打破死鎖。什麼是死鎖?它是如何產生的?死鎖是指兩個或多個事務在同一資源上相互占用,並請求鎖定對方占用的資...
mysql db是什麼 MySQL是什麼?
在學習mysql之前,首先需要了解資料庫和sql。如果您已經知道資料庫和sql,那麼可以直接跳轉到下一章節的學習。1.資料庫簡介 當您拍攝 並將其上傳到微博,朋友圈等,這樣的社交網路中的帳戶時,您的 庫就有可能儲存在乙個資料庫中。當您瀏覽電子商務 購買鞋子,衣服等時,您使用購物車就是資料庫應用。資料...