Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mendapatkan Kembali Baris Tercap Masa Terkini dengan Cekap untuk Nilai Utama yang Berbeza dalam Pangkalan Data?

Bagaimana untuk Mendapatkan Kembali Baris Tercap Masa Terkini dengan Cekap untuk Nilai Utama yang Berbeza dalam Pangkalan Data?

Linda Hamilton
Linda Hamiltonasal
2024-12-25 01:17:11195semak imbas

How to Efficiently Retrieve the Most Recent Timestamped Rows for Distinct Key Values in a Database?

Mendapatkan Kembali Baris Tercap Masa Terkini untuk Nilai Kekunci Berbeza

Dalam konteks pangkalan data, memilih baris dengan cap masa terkini untuk setiap kunci yang berbeza nilai boleh menjadi keperluan biasa. Mari kita terokai isu ini dan sediakan penyelesaian yang komprehensif.

Pendekatan awal pengelompokan mengikut sensorID dan pesanan mengikut cap masa maksimum gagal kerana keperluan medan bukan agregat yang disertakan dalam klausa SELECT juga mesti disertakan dalam KUMPULAN MENGIKUT klausa. Untuk menangani perkara ini, terdapat dua penyelesaian yang berdaya maju:

Penyelesaian 1:

SELECT sensorID, MAX(timestamp), sensorField1, sensorField2
FROM sensorTable
GROUP BY sensorID
ORDER BY sensorID;

Kaedah ini mengumpulkan baris mengikut sensorID dan mengagregatkan cap masa untuk mencari yang maksimum . Medan lain disertakan dalam klausa SELECT tanpa sebarang pengagregatan, membenarkan untuk mendapatkan semula data terbaharu untuk setiap penderia.

Penyelesaian 2:

SELECT s1.sensorID, s1.timestamp, s1.sensorField1, s1.sensorField2
FROM sensorTable s1
WHERE s1.timestamp = (SELECT MAX(timestamp) FROM sensorTable s2 WHERE s1.sensorID = s2.sensorID)
ORDER BY s1.sensorID, s1.timestamp;

Penyelesaian ini menggunakan subkueri untuk mencari cap masa maksimum bagi setiap penderia, kemudian merujuk maklumat tersebut dalam pertanyaan utama untuk memilih baris terbaharu. Ia mengelakkan keperluan untuk fungsi agregat pada medan bukan cap masa.

Kedua-dua penyelesaian secara berkesan menangani masalah mendapatkan semula baris cap masa terbaharu untuk nilai kunci yang berbeza. Pilihan antara kedua-duanya bergantung pada faktor seperti prestasi pangkalan data dan keperluan khusus aplikasi.

Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Kembali Baris Tercap Masa Terkini dengan Cekap untuk Nilai Utama yang Berbeza dalam Pangkalan Data?. 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