Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menjana Julat Nombor dengan Cekap dalam MySQL Tanpa Gelung?

Bagaimana untuk Menjana Julat Nombor dengan Cekap dalam MySQL Tanpa Gelung?

Susan Sarandon
Susan Sarandonasal
2025-01-18 02:20:09976semak imbas

How to Efficiently Generate a Range of Numbers in MySQL Without Loops?

Menjana Urutan Nombor dalam MySQL Tanpa Gelung

MySQL selalunya memerlukan penjanaan nombor berturut-turut untuk tugasan seperti mengisi jadual atau menyusun data. Ini boleh dicapai dengan cekap menggunakan operasi berasaskan set, mengelakkan keperluan untuk gelung.

Berikut ialah pertanyaan untuk menjana julat berangka:

<code class="language-sql">INSERT INTO myTable (nr)
SELECT SEQ.SeqValue
FROM (
    SELECT (HUNDREDS.SeqValue + TENS.SeqValue + ONES.SeqValue) SeqValue
    FROM (
        SELECT 0 SeqValue UNION ALL SELECT 1 SeqValue ... UNION ALL SELECT 9 SeqValue
    ) ONES
    CROSS JOIN (
        SELECT 0 SeqValue UNION ALL SELECT 10 SeqValue ... UNION ALL SELECT 90 SeqValue
    ) TENS
    CROSS JOIN (
        SELECT 0 SeqValue UNION ALL SELECT 100 SeqValue ... UNION ALL SELECT 900 SeqValue
    ) HUNDREDS
) SEQ;</code>

Pertanyaan ini memanfaatkan subkueri (ONES, TENS, HUNDREDS) untuk mencipta set digit (0-9, 0-90, 0-900). CROSS JOIN menggabungkan set ini, menghasilkan semua kombinasi yang mungkin. Hasilnya dijumlahkan untuk mencipta jujukan, dan akhirnya dimasukkan ke dalam myTable.

Pendekatan ini menawarkan kaedah berskala dan cekap untuk mencipta urutan berangka dalam MySQL, menghapuskan overhed gelung prosedur. Julat mudah dilaraskan dengan mengubah suai subkueri.

Atas ialah kandungan terperinci Bagaimana untuk Menjana Julat Nombor dengan Cekap dalam MySQL Tanpa Gelung?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn