我想做一個sql陳述句查詢,查出我下屬的下屬都是誰
例如:查出總經理佛祖,佛祖管理的下屬唐僧,唐僧管理的孫悟空,就輸入佛祖,然后就可以查出唐僧和孫悟空。
這個是sql

里面的leaderId就是其上司id,根據這個來查
這個是我寫好的一些內容,但查出來的結果不是唯一的,會出現多個重復的值。。。

麻煩哪位大神幫忙看看好嗎,謝謝先了
uj5u.com熱心網友回復:
leaderId是最后的一個值uj5u.com熱心網友回復:
SELECT B.* FROM test.student AJOIN test.student B
ON A.StudentID=B.LeaderId
WHERE A.StudentName='佛祖'
UNION ALL
SELECT C.* FROM test.student A
JOIN test.student B
ON A.StudentID=B.LeaderId
JOIN test.student C
ON B.StudentID=C.LeaderId
WHERE A.StudentName='佛祖';
uj5u.com熱心網友回復:
典型的ORACLE樹狀查詢,我寫一個大概,你自己百度吧。SELECT *
FROM 表名 T1
START WITH T1.P_ID = ? -- 設定根節點
CONNECT BY PRIOR T1.PKID = T1.P_ID -- 設定回圈條件
AND LEVEL = 2 -- 設定顯示基本
uj5u.com熱心網友回復:
如果是8。0以上,則直接參考手冊中的CTE寫法吧。
WITH RECURSIVE employee_paths (id, name, path) AS
(
SELECT id, name, CAST(id AS CHAR(200))
FROM employees
WHERE manager_id IS NULL
UNION ALL
SELECT e.id, e.name, CONCAT(ep.path, ',', e.id)
FROM employee_paths AS ep JOIN employees AS e
ON ep.id = e.manager_id
)
SELECT * FROM employee_paths ORDER BY path;
uj5u.com熱心網友回復:
不考慮性能的話 select * from 表1 left join 表1 on a.id=b.leaderId left join 表1 on b.id = c.leaderId 就三層了轉載請註明出處,本文鏈接:https://www.uj5u.com/shujuku/28435.html
標籤:MySQL
上一篇:請問一下有什么解決方案
