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!