Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menambah Baris dan Nomborkannya Secara Berjujukan dalam SQL Berdasarkan Kiraan?

Bagaimana untuk Menambah Baris dan Nomborkannya Secara Berjujukan dalam SQL Berdasarkan Kiraan?

Patricia Arquette
Patricia Arquetteasal
2025-01-06 14:15:41543semak imbas

How to Append Rows and Sequentially Number Them in SQL Based on a Count?

Menambahkan Baris dan Hasil Penomboran dalam SQL

Bagaimana saya boleh mengembangkan set hasil untuk memasukkan berbilang baris untuk setiap baris dengan kiraan yang lebih besar daripada 1, sambil menomborkannya secara berurutan? Sebagai contoh, pertimbangkan jadual berikut dengan nilai dan kiraan:

Value Count
foo 1
bar 3
baz 2

Output yang kami kehendaki ialah:

Value Count Index
foo 1 1
bar 3 1
bar 3 2
bar 3 3
baz 2 1
baz 2 2

Untuk mencapai keserasian merentas pangkalan data ini, pertimbangkan untuk menggunakan "Nombor" jadual:

SELECT value, count, number
FROM table
JOIN Numbers
ON table.count >= Numbers.number

Penyelesaian ini menjana urutan nombor sehingga kiraan maksimum dalam jadual. Dengan menggabungkan jadual asal dengan jadual Nombor, kami mengulangi baris dengan berkesan dan menetapkan indeks berjujukan. Berikut ialah contoh menggunakan Microsoft SQL Server:

WITH Numbers AS (
    SELECT ROW_NUMBER() OVER (ORDER BY number) AS number
    FROM (
        SELECT 1 AS number
        UNION ALL
        SELECT number + 1
        FROM Numbers
        WHERE number < (MAX(count) OVER ())
    ) AS Outer
)
SELECT value, count, number
FROM table
JOIN Numbers
ON table.count >= Numbers.number

Atas ialah kandungan terperinci Bagaimana untuk Menambah Baris dan Nomborkannya Secara Berjujukan dalam SQL Berdasarkan Kiraan?. 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