zoukankan      html  css  js  c++  java
  • 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`
  • 相关阅读:
    C++内存管理
    GitHub 简单用法
    Tembin
    git
    js 插件使用总结
    cas sso
    Redis实战
    全面分析 Spring 的编程式事务管理及声明式事务管理
    mybatis
    b2b
  • 原文地址:https://www.cnblogs.com/easyidea/p/15079897.html
Copyright © 2011-2022 走看看