Memilih Nilai Terkini untuk Setiap Kunci dalam Jadual Pangkalan Data
Apabila bekerja dengan jadual yang mengandungi data penderia atau maklumat lain yang dicap masa, ia selalunya diperlukan untuk mendapatkan semula entri terbaharu bagi setiap nilai kunci individu. Walaupun pendekatan mudah yang melibatkan pengumpulan mengikut kekunci dan susunan mengikut cap masa maksimum mungkin kelihatan intuitif, ia boleh menyebabkan ralat disebabkan oleh kemasukan medan bukan kunci dalam pengagregatan.
Penyelesaian Ganti Menggunakan Subquery :
Satu kaedah yang boleh dipercayai menangani isu ini dengan menggunakan subkueri untuk mengenal pasti cap masa maksimum untuk setiap nilai kunci:
SELECT sensorID, timestamp, sensorField1, sensorField2 FROM sensorTable WHERE timestamp = (SELECT MAX(timestamp) FROM sensorTable WHERE sensorID = sensorTable.sensorID) ORDER BY sensorID, timestamp;
Dalam pertanyaan ini:
Penyelesaian Tambahan Menggunakan JOIN:
Penyelesaian alternatif menggunakan operasi JOIN:
SELECT s1.sensorID, s1.timestamp, s1.sensorField1, s1.sensorField2 FROM sensorTable AS s1 JOIN ( SELECT sensorID, MAX(timestamp) AS max_timestamp FROM sensorTable GROUP BY sensorID ) AS s2 ON s1.sensorID = s2.sensorID AND s1.timestamp = s2.max_timestamp;
Atas ialah kandungan terperinci Bagaimana untuk Memilih Nilai Terkini dengan Cekap untuk Setiap Kunci dalam Jadual Pangkalan Data?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!