MySQL 級聯查詢所有父級


MySQL 級聯查詢所有父級

 

表結構:

id name code parent_code
1 老板 A  
2 總經理 B A
3 項目總監 C B
4 開發工程師 D C

 

 

 

 

 

 

查詢D開發工程師的所有上級:

    SELECT
        `name`,
        @`code` AS c_ids, 
        ( SELECT @`code` := parent_code FROM depart WHERE `code` = @`code` ) AS p_ids
    FROM
        depart
        ,( SELECT @`code` := 'D' ) b 

 

SQL 分析:

 
        
SELECT @`code`:= 'D' 的作用是 把'D'賦值給變量 @`code`
 
        

賦值的方法還有其他寫法:
1、set @`code`='D';
2、set @`code`:='D';
3、select @`code`='D';
4、select @`code`= 字段名 from 表名 where ……

 

 SELECT @`code` := parent_code FROM depart WHERE `code` = @`code` 

不斷的賦值與查詢:

不斷的查詢 parent_code 並賦值給@`code` 通過WHERE條件不斷的查詢新值。

去重的寫法:

SELECT
    u2.`code`,
    u2.`name` 
FROM
    (
    SELECT
        @`code` AS c_ids
        , ( SELECT @`code` := parent_code FROM depart WHERE `code` = @`code` ) AS p_ids
        ,@l := @l + 1 AS LEVEL 
    FROM
        depart,
        ( SELECT @`code` := 'D', @l := 0 ) b 
    ) u1
    JOIN depart u2 ON u1.c_ids = u2.`code`

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM