MySql利用父id遞歸向下查詢子節(jié)點的方法實例
不用寫存儲過程,不用建數(shù)據(jù)庫函數(shù),一段sql就可以實現(xiàn)
不用寫存儲過程,不用建數(shù)據(jù)庫函數(shù),一段sql就可以實現(xiàn)
不用寫存儲過程,不用建數(shù)據(jù)庫函數(shù),一段sql就可以實現(xiàn)
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
測試
--創(chuàng)建測試環(huán)境 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,"堯都區(qū)"); insert t_test VALUES(8,6,"朝陽區(qū)"); insert t_test VALUES(9,7,"解放西路"); insert t_test VALUES(10,8,"朝陽北路"); SELECT * FROM t_test;
測試數(shù)據(jù)展示
查詢 id=1,查詢中國下邊有哪些地方
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
id=3,查詢山西下邊有哪些地方
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
id=4,查詢北京下邊有哪些地方
最后再從 id=2 華北地區(qū)往下查詢
總結(jié)
到此這篇關(guān)于MySql利用父id遞歸向下查詢子節(jié)點的文章就介紹到這了,更多相關(guān)MySql遞歸查詢子節(jié)點內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
通過實例學(xué)習(xí)MySQL分區(qū)表原理及常用操作
我們試著想一想, 在生產(chǎn)環(huán)境中什么最重要? 我感覺在生產(chǎn)環(huán)境中應(yīng)該沒有什么比數(shù)據(jù)跟更為重要. 那么我們該如何保證數(shù)據(jù)不丟失、或者丟失后可以快速恢復(fù)呢?只要看完這篇大家應(yīng)該就能對MySQL中數(shù)據(jù)備份有一定了解2019-05-05MySQL使用LOAD_FILE()函數(shù)方法總結(jié)
在本篇文章里小編給大家分享了關(guān)于MySQL使用LOAD_FILE()函數(shù)方法和相關(guān)知識點,需要的朋友們學(xué)習(xí)下。2019-03-03Mysql中substring_index函數(shù)實現(xiàn)字符分割一行變多行
在MySQL中,字符串分割是一個常見的操作,本文主要介紹了Mysql中substring_index函數(shù)實現(xiàn)字符分割一行變多行,具有一定的參考價值,感興趣的可以了解一下2023-12-12MySQL學(xué)習(xí)之數(shù)據(jù)庫備份詳解
本篇文章主要介紹了MySQL中的 數(shù)據(jù)庫備份詳解,有需要的朋友可以借鑒參考下,希望可以有所幫助,祝大家多多進步,早日升職加薪2021-09-09