データベース テーブル内の各キーの最新の値の選択
センサー データやその他のタイムスタンプ付き情報を含むテーブルを操作する場合、多くの場合、個々のキー値の最新のエントリを取得する必要があります。キーによるグループ化と最大タイムスタンプによる順序付けを含む単純なアプローチは直感的に見えるかもしれませんが、集計に非キー フィールドが含まれるためにエラーが発生する可能性があります。
サブクエリを使用した代替ソリューション:
信頼できる 1 つの方法は、サブクエリを使用して各キーの最大タイムスタンプを識別することでこの問題に対処します。値:
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 中国語 Web サイトの他の関連記事を参照してください。