Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Menetapkan Nombor Berjujukan kepada Baris dalam Jadual Berdasarkan Kumpulan?

Bagaimana untuk Menetapkan Nombor Berjujukan kepada Baris dalam Jadual Berdasarkan Kumpulan?

Patricia Arquette
Patricia Arquetteasal
2025-01-07 19:32:43572semak imbas

How to Assign Sequential Numbers to Rows in a Table Based on Groupings?

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:

  • Jenis Data: Gunakan TIMESTAMP WITH TIME ZONE untuk medan cap masa untuk pengendalian zon waktu yang lebih baik.
  • Lewahan Data: Pertimbangkan untuk menyimpan 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!

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