Rumah > Artikel > pangkalan data > Bagaimana untuk Mendapatkan Rekod Pertama dan Terakhir daripada Baris Berkumpulan dengan Fungsi Agregat dalam MySQL?
Mengambil semula Rekod Pertama dan Terakhir daripada Baris Dikumpulkan dengan Fungsi Agregat dalam MySQL
Dalam SQL, fungsi agregat membolehkan ringkasan data yang cekap merentas kumpulan . Walau bagaimanapun, apabila menemui rekod berkumpulan, pengguna mungkin menghadapi cabaran dalam mendapatkan semula rekod pertama dan terakhir setiap kumpulan. Ini menjadi sangat penting apabila bekerja dengan jadual besar.
Pertimbangkan pertanyaan berikut:
SELECT MIN(low_price), MAX(high_price), open, close FROM symbols WHERE date BETWEEN(.. ..) GROUP BY YEARWEEK(date)
Walaupun pertanyaan ini menyediakan statistik agregat untuk setiap kumpulan (seperti harga minimum dan maksimum), ia tidak tidak menyediakan rekod pertama dan terakhir untuk setiap minggu. Untuk menangani keperluan ini, MySQL menawarkan beberapa pendekatan.
Menggunakan GROUP_CONCAT dan SUBSTRING_INDEX
Satu teknik yang cekap melibatkan memanfaatkan fungsi GROUP_CONCAT dan SUBSTRING_INDEX. GROUP_CONCAT menggabungkan nilai yang ditentukan dalam kumpulan, dipisahkan oleh pembatas. SUBSTRING_INDEX, seterusnya, mengekstrak subrentetan daripada rentetan bercantum.
Begini cara kami boleh menggunakan fungsi ini untuk mencapai hasil yang kami inginkan:
SUBSTRING_INDEX( GROUP_CONCAT(CAST(open AS CHAR) ORDER BY datetime), ',', 1 ) AS open SUBSTRING_INDEX( GROUP_CONCAT(CAST(close AS CHAR) ORDER BY datetime DESC), ',', 1 ) AS close
Pendekatan ini menghapuskan keperluan untuk subkueri yang mahal dan terbukti sangat cekap untuk senario khusus sedemikian.
Untuk maklumat lanjut tentang Fungsi GROUP_CONCAT dan SUBSTRING_INDEX, rujuk kepada dokumentasi MySQL rasmi.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Rekod Pertama dan Terakhir daripada Baris Berkumpulan dengan Fungsi Agregat dalam MySQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!