Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mendapatkan Data Sensor Terkini dengan Cekap untuk Setiap ID Sensor Unik?

Bagaimana untuk Mendapatkan Data Sensor Terkini dengan Cekap untuk Setiap ID Sensor Unik?

Linda Hamilton
Linda Hamiltonasal
2024-12-23 15:33:11877semak imbas

How to Efficiently Retrieve the Most Recent Sensor Data for Each Unique Sensor ID?

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!

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