欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

MySql8 WITH RECURSIVE遞歸查詢父子集的方法

 更新時(shí)間:2020年12月16日 09:50:59   作者:dylan95  
這篇文章主要介紹了MySql8 WITH RECURSIVE遞歸查詢父子集的方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧

背景

開(kāi)發(fā)過(guò)程中遇到類似評(píng)論的功能是,需要時(shí)用查詢所有評(píng)論的子集。不同數(shù)據(jù)庫(kù)中實(shí)現(xiàn)方式也不同,本文使用Mysql數(shù)據(jù)庫(kù),版本為8.0

  • Oracle數(shù)據(jù)庫(kù)中可使用START [Param] CONNECT BY PRIOR
  • Mysql 中需要使用 WITH RECURSIVE

需求

找到name為張三的孩子和孫子,pid為當(dāng)前記錄的父id,如張三兒子的pid為張三的id,以此類推。

在這里插入圖片描述

引入

計(jì)算1到100的累加的結(jié)果。
WITH RECURSIVE t(n) AS ( //t為我們結(jié)果表,n為字段,可以只指定表明不指定字段
  VALUES (1) //遞歸的開(kāi)始,此時(shí)可理解為t表字段n只有一條記錄 1
 UNION ALL
  SELECT n+1 FROM t WHERE n < 100   
  /*這里產(chǎn)生的結(jié)果為 2 ,此時(shí)t表的字段n有兩條記錄分別為1,2
  *				 3
  *         ...
  *         100
  */													  
)
SELECT sum(n) FROM t; //對(duì)字段n求和

父求子

WITH RECURSIVE temp AS ( // 將結(jié)果表命名為temp
	SELECT * FROM resource r WHERE r.name ='張三' //查詢出父id這條記錄,此時(shí)這條記錄已存在temp表中 ,如圖1-1
	UNION ALL
	/*這時(shí)要注意,下面這條sql是獲取的期望結(jié)果中的后兩條記錄(不包含第一條)
	*注意where后的條件,我們使用temp表中的唯一一條記錄的id關(guān)聯(lián)resource表中的pid
	*僅當(dāng)temp第一條記錄匹配不到resource表中的pid時(shí)才會(huì)對(duì)temp的第二條記錄id進(jìn)行匹配
	*/
	SELECT r.* FROM resource r,temp t WHERE t.id = r.pid
)select * from temp

在這里插入圖片描述

子查父

WITH recursive temp AS (
	SELECT * FROM resource r WHERE r.name ='張三孫子'
	UNION ALL
	//已知的是子集,所以我們需要通過(guò)temp的pid匹配resource的id
	SELECT r.* FROM resource r,temp t WHERE t.pid = r.id
)select * from temp

在這里插入圖片描述

到此這篇關(guān)于MySql8 遞歸查詢父子集的方法的文章就介紹到這了,更多相關(guān)MySql8 遞歸查詢父子集內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • MySQL數(shù)據(jù)庫(kù)遷移到Oracle數(shù)據(jù)庫(kù)的完整步驟記錄

    MySQL數(shù)據(jù)庫(kù)遷移到Oracle數(shù)據(jù)庫(kù)的完整步驟記錄

    在研發(fā)過(guò)程中可能會(huì)用到將表數(shù)據(jù)庫(kù)中的表結(jié)構(gòu)及數(shù)據(jù)遷移到另外一種數(shù)據(jù)庫(kù)中,比如說(shuō)從mysql中遷移到oracle中,這篇文章主要給大家介紹了關(guān)于MySQL數(shù)據(jù)庫(kù)遷移到Oracle數(shù)據(jù)庫(kù)的完整步驟,需要的朋友可以參考下
    2024-06-06
  • 詳解MySQL恢復(fù)psc文件記錄數(shù)為0的解決方案

    詳解MySQL恢復(fù)psc文件記錄數(shù)為0的解決方案

    這篇文章主要介紹了詳解MySQL恢復(fù)psc文件記錄數(shù)為0的解決方案,遇到這個(gè)問(wèn)題的朋友,可以看一下。
    2016-11-11
  • mysql性能監(jiān)控工具Innotop簡(jiǎn)介及配置

    mysql性能監(jiān)控工具Innotop簡(jiǎn)介及配置

    INNOTOP是一個(gè)通過(guò)文本模式顯示MySQL和InnoDB的監(jiān)測(cè)工具。INNOTOP是用PERL語(yǔ)言寫成的,這使它能更加靈活的使用在各種操作平臺(tái)之上,它能詳細(xì)的的監(jiān)控出當(dāng)前MYSQL和INNODB運(yùn)行的狀態(tài),以DBA根據(jù)結(jié)果,可以合理的優(yōu)化MYSQL,讓MYSQL更穩(wěn)定更高效的運(yùn)行。
    2014-08-08
  • MySql數(shù)據(jù)庫(kù)查詢中的特殊命令

    MySql數(shù)據(jù)庫(kù)查詢中的特殊命令

    本文給大家介紹了MySql數(shù)據(jù)庫(kù)查詢中的特殊命令,包括mysql的安裝,特殊查詢語(yǔ)句,非常不錯(cuò),具有參考借鑒價(jià)值,需要的朋友可以參考下
    2017-11-11
  • mysql中的自連接與join關(guān)聯(lián)

    mysql中的自連接與join關(guān)聯(lián)

    這篇文章主要介紹了mysql中的自連接與join關(guān)聯(lián),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-09-09
  • mysql數(shù)據(jù)庫(kù)修改添加Date格式列的方法

    mysql數(shù)據(jù)庫(kù)修改添加Date格式列的方法

    這篇文章主要介紹了關(guān)于mysql數(shù)據(jù)庫(kù)如何修改添加Date格式的列 ,需要的朋友可以參考下
    2014-07-07
  • mysql limit分頁(yè)優(yōu)化詳細(xì)介紹

    mysql limit分頁(yè)優(yōu)化詳細(xì)介紹

    MySQL最常用也最需要優(yōu)化的就是limit,MySQL的limit給分頁(yè)帶來(lái)了極大的方便,但數(shù)據(jù)量一大的時(shí)候,limit的性能就急劇下降,需要的朋友可以參考下
    2016-12-12
  • navicat連接mysql報(bào)錯(cuò)1251的解決方法

    navicat連接mysql報(bào)錯(cuò)1251的解決方法

    這篇文章主要為大家詳細(xì)介紹了navicat連接mysql報(bào)錯(cuò)1251的解決方法,文中解決方法介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下
    2022-07-07
  • 有關(guān)mysql優(yōu)化的一些東東整理

    有關(guān)mysql優(yōu)化的一些東東整理

    有關(guān)mysql優(yōu)化的一些東東,自己整理的,網(wǎng)上搜集的,供朋友們學(xué)習(xí)參考吧
    2013-02-02
  • MySQL?原理優(yōu)化之Group?By的優(yōu)化技巧

    MySQL?原理優(yōu)化之Group?By的優(yōu)化技巧

    這篇文章主要介紹了MySQL?原理優(yōu)化之Group?By的優(yōu)化技巧,文章圍繞主題展開(kāi)詳細(xì)的內(nèi)容介紹,具有一定的參考價(jià)值,需要的小伙伴可以參考一下
    2022-08-08

最新評(píng)論