公用表示式遞迴求最短路徑詳解

2021-07-15 19:35:13 字數 3117 閱讀 8179

需求:求從a出發到d的最短路徑,如圖:

) select s 起點,e 終點,dist 距離 from t;

step1:設定起始點

select 『a』,』a』,0 from dual;–即a到a的距離為0

從a出發,下一站有b、c兩種可能,

a到b,下一站的起點是b,

a到c,下一站的起點是c

從b出發,下一站有c、d兩種可能

從c出發,下一站有d一種可能

從c出發,下一站只有d

綜上:

當然用oracle的connect by prior能更簡單地實現這個需求,但公用表示式可用於db2、sql server等各種不同的資料庫,個人比較喜歡這種寫法。

公用表表示式 CTE 遞迴

指定臨時命名的結果集,這些結果集稱為公用表表示式 cte 公用表表示式可以包括對自身的引用。這種表示式稱為遞迴公用表表示式。對於遞迴公用表示式來說,實現原理也是相同的,同樣需要在語句中定義兩部分 在sql這兩部分通過union all連線結果集進行返回 with cte as select id,p...

詳解公用表表示式 CTE

對於select查詢語句來說,通常情況下,為了使t sql 更加簡潔和可讀,在乙個查詢中引用另外的結果集都是通過檢視而不是子查詢來進行分解的.但是,檢視是作為系統物件存在資料庫中,那對於結果集僅僅需要在儲存過程或是使用者自定義函式中使用一次的時候,使用檢視就顯得有些奢侈了.公用表表示式 common...

詳解公用表表示式 CTE

對於select查詢語句來說,通常情況下,為了使t sql 更加簡潔和可讀,在乙個查詢中引用另外的結果集都是通過檢視而不是子查詢來進行分解的.但是,檢視是作為系統物件存在資料庫中,那對於結果集僅僅需要在儲存過程或是使用者自定義函式中使用一次的時候,使用檢視就顯得有些奢侈了.公用表表示式 common...