SQLite – WITH Clause

Loading

使用 WITH Clause 的方式,參考文章 https://www.sqlite.org/lang_with.html

透過 CTE : Common Table Expressions ,它可以把 SELECT 後整個 Table 儲存起來,共後續 SQL 語法來使用.而 Recursive Common Table Expressions 可以透過多次 SELECT 的資料組合起來共 後續 SQL 語法來使用.

Recursive Common Table Expressions 程式結構如下:

cte-table-name AS (
   initial-select
   UNION ALL
   recursive-select

這邊的 x 會一直增加,並指定 x 小於 10 就停止.

WITH RECURSIVE
  cnt(x) AS (
     VALUES(1) 
     UNION ALL 
     SELECT x+1 FROM cnt WHERE x<10
)
SELECT x FROM cnt;

執行結果

1
2
3
4
5
6
7
8
9
10

這邊的停止條件為 Limit 10 ,最多就 10 筆資料之後就停止了.

WITH RECURSIVE
  cnt(x) AS (
     SELECT 1
     UNION ALL
     SELECT x+1 FROM cnt
      LIMIT 10
  )
SELECT x FROM cnt;

執行結果

1
2
3
4
5
6
7
8
9
10

多個欄位的範例.

WITH RECURSIVE
  cnt(x , y) AS ( 
     SELECT 1 , 1 
     UNION ALL 
     SELECT x+1 , y+1 FROM cnt WHERE x<10
)
SELECT x , y FROM cnt;

執行結果

1|1
2|2
3|3
4|4
5|5
6|6
7|7
8|8
9|9
10|10
沒有解決問題,試試搜尋本站其他內容

發佈留言

發佈留言必須填寫的電子郵件地址不會公開。 必填欄位標示為 *

這個網站採用 Akismet 服務減少垃圾留言。進一步了解 Akismet 如何處理網站訪客的留言資料