Mendapatkan semula Baris dengan Cap Masa Terkini untuk Setiap Nilai Utama
Dalam jadual dengan data penderia, anda menghadapi keperluan untuk memilih baris terbaharu untuk setiap ID penderia unik. Cabaran timbul apabila pertanyaan yang diingini mengembalikan ralat disebabkan oleh pengumpulan yang tidak ditentukan.
Untuk menyelesaikan isu ini, terdapat dua pendekatan yang berkesan:
Pendekatan 1: Pertanyaan Bersarang
Kaedah ini menggunakan pertanyaan bersarang untuk mengenal pasti cap masa maksimum bagi setiap penderia ID:
SELECT sensorID, timestamp, sensorField1, sensorField2 FROM sensorTable s1 WHERE timestamp = (SELECT MAX(timestamp) FROM sensorTable s2 WHERE s1.sensorID = s2.sensorID) ORDER BY sensorID, timestamp;
Pendekatan 2: Fungsi Tetingkap
Sebagai alternatif, anda boleh memanfaatkan fungsi tetingkap, MAX() ke atas tetingkap gelongsor, untuk mencapai hasil yang diingini :
SELECT sensorID, MAX(timestamp) OVER (PARTITION BY sensorID ORDER BY timestamp) AS max_timestamp, sensorField1, sensorField2 FROM sensorTable ORDER BY sensorID, max_timestamp;
Kedua-dua pendekatan secara berkesan memilih satu baris untuk setiap ID penderia, mewakili yang terbaharu titik data. Pilihan bergantung pada persekitaran pangkalan data khusus dan keperluan prestasi.
Atas ialah kandungan terperinci Bagaimana untuk Mendapatkan Data Sensor Terkini dengan Cekap untuk Setiap ID Sensor Unik?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!