Maison > base de données > tutoriel mysql > le corps du texte

Comment MySql utilise-t-il l'identifiant parent pour interroger de manière récursive les nœuds enfants vers le bas ?

王林
Libérer: 2023-05-30 16:03:28
avant
1103 Les gens l'ont consulté

Pas besoin d'écrire des procédures stockées, pas besoin de créer des fonctions de base de données, juste un morceau de SQL peut être réalisé

SELECT
	ID.LEVEL,
	DATA.* 
FROM
	(
	SELECT
		@ids AS _ids,
		( SELECT @ids := GROUP_CONCAT( region_id ) FROM region WHERE FIND_IN_SET(parent_id, @ids ) ) AS cids,
		@l := @l + 1 AS LEVEL 
	FROM
		region,
		( SELECT @ids := 3, @l := 0 ) b 
	WHERE
		@ids IS NOT NULL 
	) ID,
	region DATA 
WHERE
	FIND_IN_SET( DATA.region_id, ID._ids ) 
ORDER BY
	LEVEL
Copier après la connexion

Comment MySql utilise-t-il lidentifiant parent pour interroger de manière récursive les nœuds enfants vers le bas ?#🎜🎜 #

#🎜 🎜#test

--创建测试环境
create table t_test(
	id int PRIMARY key,
	parent_id int,
	name varchar(200)
)

insert t_test VALUES(1,null,"中国");

insert t_test VALUES(2,1,"华北");

insert t_test VALUES(3,2,"山西省");
insert t_test VALUES(4,2,"北京");

insert t_test VALUES(5,3,"临汾市");
insert t_test VALUES(6,4,"北京市");


insert t_test VALUES(7,5,"尧都区");
insert t_test VALUES(8,6,"朝阳区");

insert t_test VALUES(9,7,"解放西路");
insert t_test VALUES(10,8,"朝阳北路");


SELECT * FROM t_test;
Copier après la connexion

Affichage des données de test

Comment MySql utilise-t-il lidentifiant parent pour interroger de manière récursive les nœuds enfants vers le bas ?query id= 1. Vérifiez quels endroits se trouvent au bas de la Chine

SELECT
	ID.LEVEL,
	DATA.* 
FROM
	(
	SELECT
		@ids AS _ids,
		( SELECT @ids := GROUP_CONCAT( id ) FROM t_test WHERE FIND_IN_SET(parent_id, @ids ) ) AS cids,
		@l := @l + 1 AS LEVEL 
	FROM
		t_test,
		( SELECT @ids := 1, @l := 0 ) b 
	WHERE
		@ids IS NOT NULL 
	) ID,
	t_test DATA 
WHERE
	FIND_IN_SET( DATA.id, ID._ids ) 
ORDER BY
	LEVEL
Copier après la connexion

Comment MySql utilise-t-il lidentifiant parent pour interroger de manière récursive les nœuds enfants vers le bas ?id=3. du Shanxi

SELECT
	ID.LEVEL,
	DATA.* 
FROM
	(
	SELECT
		@ids AS _ids,
		( SELECT @ids := GROUP_CONCAT( id ) FROM t_test WHERE FIND_IN_SET(parent_id, @ids ) ) AS cids,
		@l := @l + 1 AS LEVEL 
	FROM
		t_test,
		( SELECT @ids := 3, @l := 0 ) b 
	WHERE
		@ids IS NOT NULL 
	) ID,
	t_test DATA 
WHERE
	FIND_IN_SET( DATA.id, ID._ids ) 
ORDER BY
	LEVEL
Copier après la connexion

#🎜 🎜#

id=4, vérifie quels endroits sont en dessous de PékinComment MySql utilise-t-il lidentifiant parent pour interroger de manière récursive les nœuds enfants vers le bas ?

# 🎜🎜#Enfin, descendez du nord de la Chine avec id=2 Requête

Comment MySql utilise-t-il lidentifiant parent pour interroger de manière récursive les nœuds enfants vers le bas ?

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Étiquettes associées:
source:yisu.com
Déclaration de ce site Web
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn
Tutoriels populaires
Plus>
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal
À propos de nous Clause de non-responsabilité Sitemap
Site Web PHP chinois:Formation PHP en ligne sur le bien-être public,Aidez les apprenants PHP à grandir rapidement!