Rumah  >  Artikel  >  pangkalan data  >  Bagaimana untuk Nombor Baris mengikut Kumpulan dalam MySQL?

Bagaimana untuk Nombor Baris mengikut Kumpulan dalam MySQL?

Barbara Streisand
Barbara Streisandasal
2024-11-11 21:52:03391semak imbas

How to Number Rows by Group in MySQL?

Menomborkan Baris mengikut Kumpulan dalam MySQL

Pertimbangkan struktur jadual berikut:

id crew_id amount type
1 4 1000 AUB
2 4 1500 AUB
3 5 8000 CA
4 4 1000 CA
5 5 1000 AUB
6 6 3000 AUB
7 4 2000 CA
8 6 3500 AUB
9 4 5000 AUB
10 5 9000 CA
11 5 1000 CA

Untuk menjana set hasil yang termasuk nombor baris untuk setiap gabungan crew_id dan jenis, laksanakan yang berikut pertanyaan:

SELECT    id,
              crew_id,
              amount,
              type,
             ( 
                CASE type 
                WHEN @curType 
                THEN @curRow := @curRow + 1 
                ELSE @curRow := 1 AND @curType := type END
              ) + 1 AS rank
    FROM      Table1 p,
              (SELECT @curRow := 0, @curType := '') r
   ORDER BY  crew_id,type asc;

Penjelasan:

  • Pertanyaan mula-mula memulakan dua pembolehubah pengguna, @curRow dan @curType, untuk menjejaki nombor baris semasa dan nilai semasa jenis, masing-masing.
  • Dalam pertanyaan utama, penyata CASE menyemak sama ada nilai semasa jenis sepadan dengan nilai yang disimpan sebelum ini dalam @curType. Jika ia sepadan, ia menambah @curRow sebanyak 1. Jika tidak, ia menetapkan semula @curRow kepada 1 dan mengemas kini @curType dengan nilai baharu.
  • Ungkapan (@curRow := @curRow 1) 1 menambah penambahan atau tetapkan semula nilai @curRow sebanyak 1 untuk menjana nombor baris.
  • Pertanyaan disusun mengikut crew_id dan taip untuk mengumpulkan dan menomborkan baris dengan betul.

Output:

id crew_id amount type row_number
1 4 1000 AUB 1
2 4 1500 AUB 2
9 4 5000 AUB 3
4 4 1000 CA 1
7 4 2000 CA 2
5 5 1000 AUB 1
3 5 8000 CA 1
10 5 9000 CA 2
11 5 1000 CA 3
6 6 3000 AUB 1
6 6 3000 AUB 2

Atas ialah kandungan terperinci Bagaimana untuk Nombor Baris mengikut Kumpulan dalam MySQL?. 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