Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menetapkan Nombor Berjujukan kepada Baris dalam Jadual Berdasarkan Kumpulan?
Auto-Penomboran Baris dalam Jadual mengikut Kumpulan
Panduan ini menunjukkan cara untuk menetapkan nombor turutan secara automatik kepada baris dalam kumpulan dalam jadual, khususnya menangani jadual address_history
di mana pengelompokan berdasarkan lajur person_id
. Walaupun beberapa kaedah wujud, kami akan menumpukan pada penggunaan lajur bersiri dan fungsi tetingkap.
Kaedah 1: Menggunakan Lajur Bersiri (Disyorkan)
Pendekatan paling mudah ialah memanfaatkan lajur bersiri atau IDENTITI. Ini secara automatik menjana nombor berjujukan yang unik.
<code class="language-sql">CREATE TABLE address_history ( address_history_id SERIAL PRIMARY KEY, person_id INT NOT NULL REFERENCES people(id), created_at TIMESTAMP WITH TIME ZONE NOT NULL DEFAULT CURRENT_TIMESTAMP, previous_address TEXT );</code>
Lajur SERIAL
(address_history_id
) meningkat secara automatik, memberikan penomboran urutan yang diingini untuk setiap baris.
Kaedah 2: Menggunakan Fungsi Tetingkap (Alternatif)
Jika lajur bersiri tidak boleh dilaksanakan, fungsi tetingkap menawarkan penyelesaian. Kaedah ini mencipta paparan yang menambah lajur nombor berjujukan.
<code class="language-sql">CREATE VIEW address_history_nr AS SELECT *, ROW_NUMBER() OVER (PARTITION BY person_id ORDER BY address_history_id) AS adr_nr FROM address_history;</code>
Ini menjana paparan (address_history_nr
) yang mengandungi lajur tambahan (adr_nr
) dengan nombor berjujukan dalam setiap kumpulan person_id
. Pandangan ini bertindak sebagai pengganti jadual dalam pertanyaan.
Nota Penting:
TIMESTAMP WITH TIME ZONE
untuk medan cap masa untuk pengendalian zon waktu yang lebih baik.previous_address
sahaja. Mengekalkan kedua-dua alamat semasa dan sebelumnya mungkin membawa kepada ketidakkonsistenan data.Pendekatan ini memastikan penomboran jujukan yang cekap dan tepat dalam kumpulan, meningkatkan pengurusan data dan prestasi pertanyaan.
Atas ialah kandungan terperinci Bagaimana untuk Menetapkan Nombor Berjujukan kepada Baris dalam Jadual Berdasarkan Kumpulan?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!