Pengantar CTE rekursif

Kueri Hierarkis dan Rekursif di SQL Server

Jasmin Ludolf

Content Developer

CTE rekursif

Terdiri dari 4 bagian:

WITH cte_name AS (

-- Anggota jangkar initial_query
UNION ALL -- Anggota rekursif recursive_query termination_condition )
SELECT * FROM cte_name
Kueri Hierarkis dan Rekursif di SQL Server

Panduan menggunakan CTE rekursif

  • Untuk lebih dari 100 langkah rekursi, tingkatkan batas rekursi:

    • OPTION(MAXRECURSION 32767)
  • Pernyataan SQL berikut tidak diizinkan: GROUP BY, HAVING, LEFT JOIN, RIGHT JOIN, OUTER JOIN, SELECT DISTINCT, Subqueries,TOP

  • Jumlah kolom pada anggota jangkar dan rekursif harus sama

  • Tipe data pada anggota jangkar dan rekursif harus sama

Kueri Hierarkis dan Rekursif di SQL Server

Contoh rekursif

Menghitung faktorial:

Faktorial n adalah hasil kali semua bilangan bulat positif ≤ n:

3! = 1 x 2 x 3 = 6

Faktorial n! didefinisikan secara rekursif sebagai berikut:

  • 0! = 1 untuk iteration = 1
  • (n+1)! = n! * (iteration+1) untuk iteration > 1
Kueri Hierarkis dan Rekursif di SQL Server

Contoh rekursif dalam kode

WITH recursion AS

(SELECT 1 AS iterationCounter,1 AS factorial
UNION ALL SELECT iterationCounter+1,factorial * (iterationCounter+1) FROM recursion
WHERE iterationCounter < 10 )
SELECT factorial FROM recursion
3628800
Kueri Hierarkis dan Rekursif di SQL Server

Ayo berlatih!

Kueri Hierarkis dan Rekursif di SQL Server

Preparing Video For Download...