FIND_IN_SET ( t1 . parent_id , @pids ) > 0 , @pids : = CONCAT ( @pids , ',' , t1 . id ) , ) AS ischild ( SELECT id , parent_id FROM table_name t ORDER BY parent_id , id ) t1 , ( SELECT @pids : = '16' ) t2 WHERE ischild != 0 OR id = '16'

此方法,通过FIND_IN_SET找出当前数据的parent_id是否在@pids的满足条件的字符串当中。如果符合,则将当前数据的id加入@pids;否则isChild设置为0。依次往下查询,最终找出isChild不为0的即为满足条件的数据id集合。

  1. 根据子级ID递归查询所有父级ID
SELECT
	t2.id 
	SELECT
		@r AS _id,
		( SELECT @r := parent_id FROM table_name WHERE id = _id ) AS parent_id,
		@s := @s + 1 AS sort 
		( SELECT @r := 23, @s := 0 ) temp,
		table_name 
	WHERE
		@r > 0 
	JOIN table_name t2 ON t1._id = t2.id 
ORDER BY
	t1.sort DESC

补充: sqlite递归查询

<select id="getParentTreeId" parameterType="java.lang.Long" resultType="java.lang.Long">
		with recursive cid(n) AS
            VALUES (#{id})
            UNION
            SELECT parent_id FROM table_name, cid
            WHERE id = cid.n AND delete_dt = 0
        SELECT id  FROM table_name
        WHERE id IN cid
    </select>
    <select id="getChildTreeId" parameterType="java.lang.Long" resultType="java.lang.Long">
		with recursive pid(n) AS
            VALUES (#{id})
            UNION
            SELECT id FROM table_name, pid
            WHERE parent_id = pid.n AND delete_dt = 0
        SELECT id  FROM table_name
        WHERE id IN pid
    </select>
				
需求:已知某个id的值,需要查询这个id关联的所有父级数据,如查询到该id的父类数据之后,还需要查询父类数据的爷爷辈数据,依次类推,直到查询到顶级。 SELECT T2.* FROM ( SELECT @r AS _id, (SELECT @r := parent_id FROM folder WHERE id = _id) AS parent_id, @l := @l + 1 AS lvl
转自:http://www.cnblogs.com/xiaoxi/p/5942805.html 作者语:之前项目使用的是ms sqlserver数据库,支持with as 语法中直接递归调用。但mysql并不支持with as 语法,只能将with as的过程封装成函数,然后在查询中进行调用。此文有效的解决了我的问题,特转载至此,以留以后查询使用。 1、创建表: DROP TABLE I
创建自定义函数, CREATE DEFINER=`root`@`%` FUNCTION `getParentList`(rootId varchar(100)) RETURNS varchar(1000) CHARSET utf8mb4 COLLATE utf8mb4_general_ci BEGIN DECLARE fid varchar(100) default ''; DECLARE str
MySQL 树递归查找父级:技术解析与代码示例 在数据库管理中,树状结构是一种常见的数据组织形式,例如组织架构、文件系统等。在MySQL中,我们可以通过递归查询来实现对树状结构的遍历,特别是查找某个节点的所有父级节点。本文将详细介绍MySQL树递归查找父级的技术原理,并提供代码示例。 树状结构的存储方式 在MySQL中,树...
DROP TABLE IF EXISTS `merchant_region`; CREATE TABLE `merchant_region` ( `id` int(11) NOT NULL AUTO_INCREMENT, `parent_id` int(11) NULL DEFAULT NULL, `name` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL, PRIMAR
MySQL 递归查询所有父节点 在数据库中,经常会遇到层级结构的数据,例如组织结构、分类目录等。有时我们需要查询某个节点的所有父节点,这就需要用到递归查询MySQL 8.0 引入了公共表表达式(Common Table Expressions, CTE)的功能,使得递归查询变得更加简单。 递归查询的基本概念 递归查询是一...
Source Server : LongZheng Source Server Version : 50718 Source Host : localhost:3306 Sourc...