Bagaimana untuk Memilih Maksimum Bijak Kumpulan dalam MySQL?

Susan Sarandon
Lepaskan: 2024-11-22 09:56:11
asal
946 orang telah melayarinya

How to Select the Group-Wise Maximum in MySQL?

Memilih Maksimum Bijak Kumpulan dalam MySQL

Dalam pangkalan data hubungan, kadangkala anda perlu mendapatkan semula baris dengan nilai maksimum lajur tertentu untuk setiap kumpulan. Ini dikenali sebagai memilih maksimum mengikut kumpulan. Dalam MySQL, terdapat beberapa pendekatan untuk mencapai ini.

Kaedah Subkueri

Satu kaedah yang cekap ialah menggunakan subkueri:

SELECT *
FROM (
  SELECT id, MAX(version_id) AS version_id
  FROM table
  GROUP BY id
) AS t1
INNER JOIN table AS t2
  ON t2.id = t1.id AND t1.version_id = t2.version_id;
Salin selepas log masuk

Subkueri ini mencipta jadual bagi ID versi maksimum untuk setiap ID dan kemudian bergabung dengan jadual asal untuk mendapatkan semula baris yang sepadan. Ia agak cekap dan menganggap kewujudan indeks pada lajur (id, version_id).

Kaedah Pengagregatan dan Kedudukan

Sebagai alternatif, anda boleh menggunakan fungsi pengagregatan dan pemeringkatan:

SELECT id,
       version_id,
       field1,
       field2
FROM (
  SELECT id,
          version_id,
          field1,
          field2,
          RANK() OVER (PARTITION BY id ORDER BY version_id DESC) AS ranking
  FROM table
) AS ranked_table
WHERE ranking = 1;
Salin selepas log masuk

Pertanyaan ini menyusun baris bagi setiap ID dalam susunan menurun versi_id dan memilih baris yang mempunyai kedudukan 1, menapis dengan berkesan untuk versi maksimum.

Fungsi Tetingkap

Fungsi tetingkap juga boleh digunakan untuk tujuan ini:

SELECT id,
       version_id,
       field1,
       field2
FROM (
  SELECT id,
          version_id,
          field1,
          field2,
          MAX(version_id) OVER (PARTITION BY id) AS max_version_id
  FROM table
) AS windowed_table
WHERE version_id = max_version_id;
Salin selepas log masuk

Pertanyaan ini mengira maksimum ID versi untuk setiap ID menggunakan fungsi tetingkap MAX() over() dan memilih baris dengan ID versi yang sepadan.

Atas ialah kandungan terperinci Bagaimana untuk Memilih Maksimum Bijak Kumpulan dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

sumber:php.cn
Kenyataan Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan