Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Cekap Mencari Nilai Maks/Min setiap Kumpulan Menggunakan SQL Joins?

Bagaimana untuk Cekap Mencari Nilai Maks/Min setiap Kumpulan Menggunakan SQL Joins?

DDD
DDDasal
2025-01-02 13:41:38516semak imbas

How to Efficiently Find Max/Min Values per Group Using SQL Joins?

Mendapatkan Nilai Maksimum/Minimum Setiap Kumpulan Menggunakan Gabungan

Dalam penyelesaian ini, kami menggunakan operasi gabungan untuk mendapatkan semula baris dengan nilai tertinggi atau terendah untuk lajur tertentu dalam setiap kumpulan, tanpa menggunakan kedudukan atau subkueri.

Untuk mencari baris dengan nilai OrderField tertinggi setiap kumpulan:

SELECT t1.*
FROM `Table` AS t1
LEFT OUTER JOIN `Table` AS t2
  ON t1.GroupId = t2.GroupId AND t1.OrderField < t2.OrderField
WHERE t2.GroupId IS NULL
ORDER BY t1.OrderField;

Sekiranya berbilang rekod berkongsi nilai OrderField maksimum yang sama dalam kumpulan, anda mungkin mahu memperhalusi lagi syarat:

SELECT t1.*
FROM `Table` AS t1
LEFT OUTER JOIN `Table` AS t2
  ON t1.GroupId = t2.GroupId 
        AND (t1.OrderField < t2.OrderField 
         OR (t1.OrderField = t2.OrderField AND t1.Id < t2.Id))
WHERE t2.GroupId IS NULL

Pendekatan ini memastikan bahawa baris dengan nilai OrderField yang paling besar dikembalikan apabila terdapat ikatan dalam kumpulan.

Atas ialah kandungan terperinci Bagaimana untuk Cekap Mencari Nilai Maks/Min setiap Kumpulan Menggunakan SQL Joins?. 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