Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mendapatkan Rekod Pertama dan Terakhir Data Terkumpul dengan Cekap dalam MySQL?

Bagaimana untuk Mendapatkan Rekod Pertama dan Terakhir Data Terkumpul dengan Cekap dalam MySQL?

Mary-Kate Olsen
Mary-Kate Olsenasal
2024-11-08 20:26:02560semak imbas

How to Efficiently Retrieve First and Last Records of Grouped Data in MySQL?

Mengambil semula Rekod Pertama dan Terakhir Data Terkumpul dengan Fungsi Agregat dalam MySQL

Dalam MySQL, apabila mengambil data daripada rekod terkumpul menggunakan fungsi agregat, ia boleh menjadi mencabar untuk mendapatkan semula rekod pertama dan terakhir kumpulan itu. Walaupun berbilang pertanyaan boleh menyelesaikannya, ia boleh menjadi tidak cekap untuk jadual besar.

Untuk mengoptimumkan proses ini, MySQL menawarkan penyelesaian yang lebih cekap menggunakan fungsi GROUP_CONCAT dan SUBSTRING_INDEX .

Menggunakan GROUP_CONCAT dan SUBSTRING_INDEX

Dengan menggunakan fungsi ini bersama-sama, anda boleh menggabungkan nilai daripada kumpulan dan kemudian mengekstrak nilai pertama dan terakhir menggunakan SUBSTRING_INDEX. Begini caranya:

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

Cara Ia Berfungsi:

  • GROUP_CONCAT menggabungkan semua nilai buka atau tutup ke dalam satu rentetan, diisih mengikut tarikh masa lajur.
  • SUBSTRING_INDEX mengekstrak nilai pertama dan terakhir daripada rentetan bercantum dengan membelahnya pada koma (','). Argumen '1' menunjukkan kejadian pertama atau terakhir.

Contoh:

Pertimbangkan pertanyaan berikut:

SELECT MIN(low_price), MAX(high_price),
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
FROM symbols
WHERE date BETWEEN(.. ..)
GROUP BY YEARWEEK(date)

Ini pertanyaan cekap mendapatkan semula rekod pertama (terbuka) dan terakhir (tutup) untuk setiap kumpulan, meminimumkan masa pemprosesan untuk besar meja.

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Rekod Pertama dan Terakhir Data Terkumpul dengan Cekap 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