Rumah >pangkalan data >tutorial mysql >Bagaimanakah SQL Boleh Menjana Julat Nombor Antara Dua Nilai Tertentu?
SQL: Menjana Urutan Nombor Antara Dua Nilai
Perlu membuat senarai nombor berturut-turut dalam julat tertentu dalam SQL? Ini boleh dicapai dengan mudah menggunakan gabungan VALUES
kata kunci dan operasi JOIN
. Katakan anda perlu menjana jujukan dari 1000 hingga 1050, setiap nombor pada baris baharu:
<code>1000 1001 1002 1003 ... 1050</code>
Begini cara melakukannya:
Penyelesaian:
Kaedah ini memanfaatkan berbilang JOIN
s jadual nombor kecil untuk mencipta jujukan yang lebih besar.
<code class="language-sql">WITH RECURSIVE x AS ( SELECT 0 AS n UNION ALL SELECT n + 1 FROM x WHERE n < 9999 -- Adjust upper limit as needed ) SELECT n FROM x WHERE n BETWEEN 1000 AND 1050 ORDER BY n;</code>
Penjelasan:
CTE Rekursif (Ungkapan Jadual Biasa): Penyataan WITH RECURSIVE
mencipta jadual sementara x
yang mengandungi nombor dari 0 ke atas. UNION ALL
menggabungkan 0 awal dengan nombor berikutnya, meningkat sehingga syarat n < 9999
tidak lagi dipenuhi. Laraskan 9999
untuk mengawal nombor maksimum yang dijana.
Menapis Julat: Klausa WHERE
menapis hasil daripada CTE untuk hanya memasukkan nombor antara 1000 dan 1050 (termasuk).
Pemesanan: ORDER BY n
memastikan nombor dipaparkan dalam tertib menaik.
Alternatif (Bukan Rekursif): Untuk julat yang lebih kecil, pendekatan bukan rekursif mungkin lebih mudah:
<code class="language-sql">WITH x AS ( SELECT 1000 AS num UNION ALL SELECT 1001 UNION ALL SELECT 1002 UNION ALL -- ... add more numbers as needed ... SELECT 1050 ) SELECT num FROM x;</code>
Walau bagaimanapun, pendekatan rekursif jauh lebih berskala untuk julat yang lebih besar.
Kesimpulan:
Teknik SQL ini menyediakan cara yang fleksibel dan cekap untuk menjana urutan berangka dalam sempadan yang ditentukan. CTE rekursif menawarkan kebolehskalaan untuk menjana jujukan yang sangat besar, menjadikannya alat yang berkuasa untuk pelbagai tugas penjanaan data. Ingat untuk melaraskan had atas dalam CTE rekursif (n < 9999
) untuk menampung julat yang diingini.
Atas ialah kandungan terperinci Bagaimanakah SQL Boleh Menjana Julat Nombor Antara Dua Nilai Tertentu?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!