Heim  >  Artikel  >  Datenbank  >  Wie verwendet MySQL die übergeordnete ID, um untergeordnete Knoten rekursiv nach unten abzufragen?

Wie verwendet MySQL die übergeordnete ID, um untergeordnete Knoten rekursiv nach unten abzufragen?

王林
王林nach vorne
2023-05-30 16:03:281153Durchsuche

Keine Notwendigkeit, gespeicherte Prozeduren zu schreiben, keine Notwendigkeit, Datenbankfunktionen zu erstellen, es kann nur ein Stück SQL implementiert werden

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

Wie verwendet MySQL die übergeordnete ID, um untergeordnete Knoten rekursiv nach unten abzufragen?

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;

Testdatenanzeige

Wie verwendet MySQL die übergeordnete ID, um untergeordnete Knoten rekursiv nach unten abzufragen?

Abfrage-ID= 1, fragen Sie ab, was unter China Place

Wie verwendet MySQL die übergeordnete ID, um untergeordnete Knoten rekursiv nach unten abzufragen?

id=3 liegt, prüfen Sie, welche Orte unter Shanxi liegen

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

Wie verwendet MySQL die übergeordnete ID, um untergeordnete Knoten rekursiv nach unten abzufragen?

id=4, prüfen Sie, welche Orte unter Beijing

Wie verwendet MySQL die übergeordnete ID, um untergeordnete Knoten rekursiv nach unten abzufragen?

Suchen Sie abschließend nach unten die Region Nordchina mit der ID=2

Wie verwendet MySQL die übergeordnete ID, um untergeordnete Knoten rekursiv nach unten abzufragen?

Das obige ist der detaillierte Inhalt vonWie verwendet MySQL die übergeordnete ID, um untergeordnete Knoten rekursiv nach unten abzufragen?. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen