複数のエントリにわたるデータを管理する場合、多くの場合、そのエントリの最新のタイムスタンプを保持するレコードを識別して取得する必要があります。指定されたキー。直接的なアプローチには、キーによるグループ化と最大タイムスタンプによる順序付けが含まれる可能性がありますが、これにより、group by 句に表示されないフィールドに関連するエラーが発生する可能性があります。
この問題を克服するために、代替のクエリ構造が提供されています。実行可能な解決策:
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;
このクエリは基本的に、sensorTable s1 の各行を、sensorTable s2 の最新のタイムスタンプ付きの対応する行と照合します。 WHERE 句は、各キーの最大タイムスタンプを持つ行を除くすべての行を効果的に除外し、選択されたデータが最新であることを保証します。結果をセンサー ID でグループ化し、タイムスタンプで並べ替えることにより、クエリは、必要な追加フィールドとともに、各キーの最新のタイムスタンプを含む 1 つの行を返します。
以上がSQL で各キーの最新のタイムスタンプ付き行を選択するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。