為資料庫表中的每個鍵選擇最新值
使用包含感測器資料或其他時間戳資訊的表時,它通常需要檢索每個單獨鍵值的最新條目。雖然涉及按鍵分組和按最大時間戳排序的簡單方法可能看起來很直觀,但由於聚合中包含非鍵字段,它可能會導致錯誤。
使用子查詢的替代解決方案:
一種可靠的方法透過使用子查詢來識別每個鍵的最大時間戳來解決此問題value:
SELECT sensorID, timestamp, sensorField1, sensorField2 FROM sensorTable WHERE timestamp = (SELECT MAX(timestamp) FROM sensorTable WHERE sensorID = sensorTable.sensorID) ORDER BY sensorID, timestamp;
在此查詢中:
使用JOIN 的其他解決方案:
另一種解決方案利用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;
以上是如何有效率地為資料庫表中的每個鍵選擇最新值?的詳細內容。更多資訊請關注PHP中文網其他相關文章!