zoukankan      html  css  js  c++  java
  • mysql 根据父id查询下面的子id

    DROP TABLE IF EXISTS `t_org`;
    CREATE TABLE `t_org` (
    `id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
    `name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL,
    `parent_id` varchar(5) CHARACTER SET utf8mb4 COLLATE utf8mb4_0900_ai_ci NULL DEFAULT NULL
    ) ENGINE = InnoDB CHARACTER SET = utf8mb4 COLLATE = utf8mb4_0900_ai_ci ROW_FORMAT = Dynamic;

    -- ----------------------------
    -- Records of t_org
    -- ----------------------------
    INSERT INTO `t_org` VALUES ('ddd', '3', 'rty');
    INSERT INTO `t_org` VALUES ('bbb', '3', 'rty');
    INSERT INTO `t_org` VALUES ('ee', '3', 'rty');
    INSERT INTO `t_org` VALUES ('aa', '4', 'ee');
    INSERT INTO `t_org` VALUES ('rt', '2', 'zttt');
    INSERT INTO `t_org` VALUES ('qqq', '4', 'ee');
    INSERT INTO `t_org` VALUES ('fghh', '4', 'ee');
    INSERT INTO `t_org` VALUES ('wew', '2', 'rttt');
    INSERT INTO `t_org` VALUES ('jkl', '4', 'ee');
    INSERT INTO `t_org` VALUES ('rty', '2', 'zttt');
    INSERT INTO `t_org` VALUES ('qwe', '3', 'rty');
    INSERT INTO `t_org` VALUES ('vbn', '3', 'rty');
    INSERT INTO `t_org` VALUES ('zttt', '1', 'zwew');

    SET FOREIGN_KEY_CHECKS = 1;

    SELECT
    id,
    ischild
    FROM
    (
    SELECT
    t1.id,
    IF
    ( find_in_set( parent_id, @pids ) > 0, @pids := concat( @pids, ',', id ), 0 ) AS ischild
    FROM
    ( SELECT id, parent_id FROM t_org t ORDER BY level,parent_id, id ) t1,
    ( SELECT @pids := 'aaa' ) t2
    ) t3
    WHERE
    ischild != '0'

    sql如上面所示,网上找的sql不加level,这样会有bug,当id和parent_id是uuid时,order by不能根据顺序排列,这样‘aaa’有可能不会最上面,concat里面就没有这个‘aaa’,就会有问题,加上level以后,就会解决这个问题。数据在上面,可以自己试试,不加level和加level的区别

  • 相关阅读:
    [转载]memcached完全剖析--1. memcached的基础
    I/O多路复用
    How to install the zsh shell in Linux && how to set it as a default login shell
    深入理解计算机中的 csapp.h和csapp.c
    (一)网络编程基础之套接字入门
    crx
    t
    武汉第一例肺炎病例
    C语言 ## __VA_ARGS__ 宏
    NLP之中文分词cppjieba
  • 原文地址:https://www.cnblogs.com/siyuan7657/p/15797367.html
Copyright © 2011-2022 走看看