Rumah > pangkalan data > tutorial mysql > Bagaimana untuk mencari baris dengan nilai lajur maksimum, dibahagikan dengan lajur lain di MySQL?

Bagaimana untuk mencari baris dengan nilai lajur maksimum, dibahagikan dengan lajur lain di MySQL?

Susan Sarandon
Lepaskan: 2025-01-25 06:46:08
asal
459 orang telah melayarinya

How to Find Rows with Maximum Column Values, Partitioned by Another Column in MySQL?

Kumpulan MySQL mengikut lajur lain untuk mencari baris dengan nilai lajur terbesar

Dalam pangkalan data, mencari baris dengan nilai terbesar yang dikumpulkan oleh lajur lain ialah tugas analisis biasa. Dalam MySQL, ini boleh dicapai dengan menggabungkan pengagregatan dan penapisan.

Artikel ini meneroka masalah mendapatkan semula baris daripada jadual yang mengandungi nilai maksimum lajur tertentu dalam setiap kumpulan yang ditakrifkan oleh lajur lain. Contohnya, dalam jadual "Sepuluh Teratas" yang disediakan, tugasnya adalah untuk mengekstrak baris bagi setiap nilai "rumah" unik dan nilai maksimum yang sepadan bagi lajur "masa tarikh".

Pertanyaan percubaan pada mulanya adalah seperti berikut, tetapi ia adalah cacat:

SELECT
  s1.id,
  s1.home,
  s1.datetime,
  s1.player,
  s1.resource
FROM TopTen s1
JOIN (SELECT
  id,
  MAX(`datetime`) AS dt
FROM TopTen
GROUP BY id) AS s2
  ON s1.id = s2.id
ORDER BY `datetime`
Salin selepas log masuk

Pertanyaan tidak mengenal pasti nilai "masa tarikh" maksimum untuk setiap "rumah". Untuk menyelesaikan masalah dengan betul, kedua-dua "rumah" dan "masa tarikh" perlu dikumpulkan dalam subkueri:

SELECT tt.*
FROM topten tt
INNER JOIN
    (SELECT home, MAX(datetime) AS MaxDateTime
    FROM topten
    GROUP BY home) groupedtt 
ON tt.home = groupedtt.home 
AND tt.datetime = groupedtt.MaxDateTime
Salin selepas log masuk

Pertanyaan akhir ini berjaya mengenal pasti setiap baris dengan nilai "rumah" berbeza yang mengandungi nilai maksimum lajur "masa tarikh"nya, menghasilkan hasil yang dijangkakan:

id home datetime player resource
1 10 04/03/2009 john 399
2 11 04/03/2009 juliet 244
5 12 04/03/2009 borat 555
8 13 01/01/2009 borat 700

Atas ialah kandungan terperinci Bagaimana untuk mencari baris dengan nilai lajur maksimum, dibahagikan dengan lajur lain di MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

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