MySQL不使用函数进行向上递归向下递归

1,777 阅读1分钟

向上递归

SELECT
	GROUP_CONCAT( s.NAME SEPARATOR "-" ) 
FROM
	(
	SELECT
		T2.id,
		T2.NAME 
	FROM
		(
		SELECT
			@r AS _id,
			( SELECT @r := parent_id FROM shop_area WHERE id = _id ) AS 2v2,
			@l := @l + 1 AS lvl 
		FROM
			( SELECT @r := '130225' ) vars,
			shop_area h 
		WHERE
			@r <> 0 
		) T1
		JOIN shop_area T2 ON T1._id = T2.id 
	ORDER BY
		T2.id 
	) s 

向下递归

SELECT
	group_concat( T1._id ) AS id 
FROM
	(
	SELECT
		@r AS _id,
		(
		SELECT
			@r := group_concat( f.dj_dzzjg_id ) 
		FROM
			dj_zzjg so
			LEFT JOIN dj_zzjg f ON so.dj_dzzjg_id = f.dj_dzzjg_id 
		WHERE
			FIND_IN_SET ( so.dzzjg_parent_id, _id ) 
		
		) AS parent_id,
		@l := @l + 1 AS lvl 
	FROM
		( SELECT @r := '45', @l := 0 ) vars,
		dj_zzjg h 
	WHERE
	@r  <> 0 
) T1