MySQL Connect By 是一個強大的功能,可以幫助我們在一個表或視圖的父子關系中在 SQL 查詢中進行遞歸。這個功能通過使用通配符和遞歸查詢來建立與樹形結構相關的連通性,從而實現了以聯接樹形結構形式展現父子關系。
MySQL Connect By 的基本結構是:
SELECT ... FROM table WHERE condition START WITHroot_expressionCONNECT BYcondition
其中,root_expression 指定了樹形結構的根節點,而 condition 指定了如何連接子節點和父節點。使用這種語法,我們可以輕松地查詢整個樹形結構,以及任意節點及其子節點。
一個例子:
SELECT empName, mgrName FROM employees, ( SELECT empID AS mgrID, empName AS mgrName FROM employees ) mgr WHERE employees.mgrID = mgr.mgrID (+) START WITH empID = 1 CONNECT BY PRIOR empID = mgrID
這個查詢返回的結果類似于這樣:
EMPNAME MGRNAME --------- --------- JIM NULL BOB JIM JANE BOB
其中,JIM 是根節點,BOB 和 JANE 是它的兩個子節點。注意到 SELECT 語句中包含了一個自我鏈接 (WHERE employees.mgrID = mgr.mgrID (+)) 以及一個開始節點 (START WITH empID = 1) 和遞歸條件 (CONNECT BY PRIOR empID = mgrID)。