最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

mysql實(shí)現(xiàn)connect by start with方式

 更新時(shí)間:2024年12月19日 16:16:52   作者:Mars'Ares  
本文介紹了MySQL中實(shí)現(xiàn)層級(jí)查詢的幾種方法,并分享了一種使用變量循環(huán)賦值的方式,通過(guò)實(shí)驗(yàn)驗(yàn)證了該方法的有效性

前言

1、mysql沒(méi)有層級(jí)查詢方法 而 oracle通過(guò)connect by start with語(yǔ)法可以實(shí)現(xiàn)層級(jí)查詢

2、mysql實(shí)現(xiàn)層級(jí)查詢的方式很多,有使用存儲(chǔ)過(guò)程函數(shù)嵌套調(diào)用亦有使用臨時(shí)表進(jìn)行層級(jí)查詢

3、本文使用一種變量循環(huán)賦值方式進(jìn)行,可以套用模版

實(shí)驗(yàn)

-- 創(chuàng)建測(cè)試表
-- DROP TABLE IF EXISTS `test_tree`;
CREATE TABLE `test_tree` (
  `id` varchar(10) DEFAULT NULL,
  `name` varchar(10) DEFAULT NULL,
  `pId` varchar(10) DEFAULT NULL
) ENGINE=InnoDB DEFAULT CHARSET=utf8;

-- 創(chuàng)建測(cè)試數(shù)據(jù)(根節(jié)點(diǎn)默認(rèn)-1)
INSERT INTO `test_tree` VALUES ('1', '中國(guó)', '-1');
INSERT INTO `test_tree` VALUES ('2', '福建省', '1');
INSERT INTO `test_tree` VALUES ('3', '海南省', '1');
INSERT INTO `test_tree` VALUES ('4', '泉州市', '2');
INSERT INTO `test_tree` VALUES ('5', '福州市', '2');
INSERT INTO `test_tree` VALUES ('6', '泉港區(qū)', '4');
INSERT INTO `test_tree` VALUES ('7', '惠安縣', '4');
-- 模版 表名代替test_tree  用id替換以下id 用pid替換以下 用其他從屬字段替換name
SELECT
 name,
 id,
 pid,
 @le:= IF (pid = -1 ,0,IF( LOCATE( CONCAT('|',pid,':'),@pathlevel) > 0,SUBSTRING_INDEX( SUBSTRING_INDEX(@pathlevel,CONCAT('|',pid,':'),-1),'|',1) +1,@le+1) ) levels,
 @pathlevel:= CONCAT(@pathlevel,'|',id,':', @le ,'|') pathlevel,
 @pathnodes:= IF( pid =-1,',root', CONCAT_WS(',',IF( LOCATE( CONCAT('|',pid,':'),@pathall) > 0 ,SUBSTRING_INDEX( SUBSTRING_INDEX(@pathall,CONCAT('|',pid,':'),-1),'|',1),@pathnodes ) ,pid ) )paths,
 @pathall:=CONCAT(@pathall,'|',id,':', @pathnodes ,'|') pathall 
FROM test_tree, 
(
 SELECT 
 @le:=0,
 @pathlevel:='', 
 @pathall:='',
 @pathnodes:=''
)  vv
ORDER BY pid,id
 
-- 結(jié)合instr(paths,'想要查所有子集的父級(jí)id')>0 驗(yàn)證
SELECT
name,
id,
pid,
levels,
paths
FROM (
	SELECT
	 name,
	 id,
	 pid,
	 @le:= IF (pid = -1 ,0,IF( LOCATE( CONCAT('|',pid,':'),@pathlevel) > 0,SUBSTRING_INDEX( SUBSTRING_INDEX(@pathlevel,CONCAT('|',pid,':'),-1),'|',1) +1,@le+1) ) levels,
	 @pathlevel:= CONCAT(@pathlevel,'|',id,':', @le ,'|') pathlevel,
	 @pathnodes:= IF( pid =-1,',root', CONCAT_WS(',',IF( LOCATE( CONCAT('|',pid,':'),@pathall) > 0 ,SUBSTRING_INDEX( SUBSTRING_INDEX(@pathall,CONCAT('|',pid,':'),-1),'|',1),@pathnodes ) ,pid ) )paths,
	 @pathall:=CONCAT(@pathall,'|',id,':', @pathnodes ,'|') pathall 
	FROM test_tree, 
	(
	 SELECT 
	 @le:=0,
	 @pathlevel:='', 
	 @pathall:='',
	 @pathnodes:=''
	)  vv
	ORDER BY pid,id
) src
WHERE instr(paths,'-1')>0
ORDER BY pid

驗(yàn)證結(jié)果

1、數(shù)據(jù)

2 查詢中國(guó)

SELECT
name,
id,
pid,
levels,
paths
FROM (
	SELECT
	 name,
	 id,
	 pid,
	 @le:= IF (pid = -1 ,0,IF( LOCATE( CONCAT('|',pid,':'),@pathlevel) > 0,SUBSTRING_INDEX( SUBSTRING_INDEX(@pathlevel,CONCAT('|',pid,':'),-1),'|',1) +1,@le+1) ) levels,
	 @pathlevel:= CONCAT(@pathlevel,'|',id,':', @le ,'|') pathlevel,
	 @pathnodes:= IF( pid =-1,',root', CONCAT_WS(',',IF( LOCATE( CONCAT('|',pid,':'),@pathall) > 0 ,SUBSTRING_INDEX( SUBSTRING_INDEX(@pathall,CONCAT('|',pid,':'),-1),'|',1),@pathnodes ) ,pid ) )paths,
	 @pathall:=CONCAT(@pathall,'|',id,':', @pathnodes ,'|') pathall 
	FROM test_tree, 
	(
	 SELECT 
	 @le:=0,
	 @pathlevel:='', 
	 @pathall:='',
	 @pathnodes:=''
	)  vv
	ORDER BY pid,id
) src
WHERE instr(paths,'1')>0
ORDER BY pid

3 查詢福建省

SELECT
name,
id,
pid,
levels,
paths
FROM (
	SELECT
	 name,
	 id,
	 pid,
	 @le:= IF (pid = -1 ,0,IF( LOCATE( CONCAT('|',pid,':'),@pathlevel) > 0,SUBSTRING_INDEX( SUBSTRING_INDEX(@pathlevel,CONCAT('|',pid,':'),-1),'|',1) +1,@le+1) ) levels,
	 @pathlevel:= CONCAT(@pathlevel,'|',id,':', @le ,'|') pathlevel,
	 @pathnodes:= IF( pid =-1,',root', CONCAT_WS(',',IF( LOCATE( CONCAT('|',pid,':'),@pathall) > 0 ,SUBSTRING_INDEX( SUBSTRING_INDEX(@pathall,CONCAT('|',pid,':'),-1),'|',1),@pathnodes ) ,pid ) )paths,
	 @pathall:=CONCAT(@pathall,'|',id,':', @pathnodes ,'|') pathall 
	FROM test_tree, 
	(
	 SELECT 
	 @le:=0,
	 @pathlevel:='', 
	 @pathall:='',
	 @pathnodes:=''
	)  vv
	ORDER BY pid,id
) src
WHERE instr(paths,'2')>0
ORDER BY pid

總結(jié)

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • mysql8新特性之binlog_expire_logs_seconds淺析

    mysql8新特性之binlog_expire_logs_seconds淺析

    MySQL8中新增了不少新特性,這些特性提高了數(shù)據(jù)庫(kù)的安全性和性能,使數(shù)據(jù)庫(kù)管理員能夠更靈活地進(jìn)行賬戶管理工作,下面這篇文章主要給大家介紹了關(guān)于mysql8新特性之binlog_expire_logs_seconds的相關(guān)資料,需要的朋友可以參考下
    2023-02-02
  • MySQL插入數(shù)據(jù)與查詢數(shù)據(jù)

    MySQL插入數(shù)據(jù)與查詢數(shù)據(jù)

    這篇文章主要介紹了 MySQL插入數(shù)據(jù)與查詢數(shù)據(jù),缺省插入、缺省插入、缺省插入等各種數(shù)據(jù)插入分享,需要的小伙伴可以參考一下,希望對(duì)你有所幫助
    2022-03-03
  • mysql 帶多個(gè)條件的查詢方式

    mysql 帶多個(gè)條件的查詢方式

    這篇文章主要介紹了mysql 帶多個(gè)條件的查詢方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2021-06-06
  • 解析SQL 表結(jié)構(gòu)信息查詢 含主外鍵、自增長(zhǎng)

    解析SQL 表結(jié)構(gòu)信息查詢 含主外鍵、自增長(zhǎng)

    本篇文章是對(duì)SQL 表結(jié)構(gòu)信息查詢 含主外鍵、自增長(zhǎng)進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下
    2013-06-06
  • MySQL Undo/Redo Log使用詳解

    MySQL Undo/Redo Log使用詳解

    本文系統(tǒng)分析了MySQL中RedoLog和UndoLog的核心機(jī)制與應(yīng)用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2026-03-03
  • MySQL系列之三 基礎(chǔ)篇

    MySQL系列之三 基礎(chǔ)篇

    本文主要介紹了MySQL基礎(chǔ)使用,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2021-07-07
  • mysql 8.0.15 winx64解壓版安裝配置方法圖文教程

    mysql 8.0.15 winx64解壓版安裝配置方法圖文教程

    這篇文章主要為大家詳細(xì)介紹了mysql 8.0.15 winx64解壓版安裝配置方法圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2019-02-02
  • MySQL數(shù)據(jù)庫(kù)索引order?by排序精講

    MySQL數(shù)據(jù)庫(kù)索引order?by排序精講

    我們今天說(shuō)的并不是大數(shù)據(jù)下該如何優(yōu)雅的排序,如何提升排序性能的問(wèn)題,我們來(lái)仔細(xì)分析說(shuō)一說(shuō)MySQL中的排序問(wèn)題,希望可以對(duì)正在閱讀的同學(xué)們有所啟迪幫助
    2021-11-11
  • MySQL?JSON類型的功能與應(yīng)用

    MySQL?JSON類型的功能與應(yīng)用

    MySQL8的JSON數(shù)據(jù)類型為存儲(chǔ)和查詢JSON數(shù)據(jù)提供了強(qiáng)大的支持,本文主要介紹了MySQL?JSON類型的功能與應(yīng)用,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-08-08
  • MySQL數(shù)據(jù)庫(kù)閉包Closure Table表實(shí)現(xiàn)示例

    MySQL數(shù)據(jù)庫(kù)閉包Closure Table表實(shí)現(xiàn)示例

    本文主要介紹了MySQL數(shù)據(jù)庫(kù)閉包Closure Table表實(shí)現(xiàn)示例,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧
    2023-01-01

最新評(píng)論

松江区| 云阳县| 三都| 五峰| 南投县| 扎兰屯市| 阜城县| 二连浩特市| 松原市| 土默特左旗| 西充县| 项城市| 吴旗县| 玉树县| 汾阳市| 阿克| 新绛县| 彰化市| 萨嘎县| 泾阳县| 关岭| 枣强县| 阿巴嘎旗| 平顶山市| 南平市| 瑞金市| 蓬莱市| 金坛市| 吉林市| 绥中县| 太谷县| 广元市| 隆德县| 宁远县| 高安市| 抚远县| 宾川县| 吉木乃县| 木兰县| 墨脱县| 漳平市|