ホームページ >データベース >mysql チュートリアル >SQL で各キーの最新のタイムスタンプ付き行を選択するにはどうすればよいですか?

SQL で各キーの最新のタイムスタンプ付き行を選択するにはどうすればよいですか?

Barbara Streisand
Barbara Streisandオリジナル
2024-12-17 16:45:11428ブラウズ

How to Select the Most Recent Timestamped Row for Each Key in SQL?

各キー値の最新のタイムスタンプ付き行の選択

複数のエントリにわたるデータを管理する場合、多くの場合、そのエントリの最新のタイムスタンプを保持するレコードを識別して取得する必要があります。指定されたキー。直接的なアプローチには、キーによるグループ化と最大タイムスタンプによる順序付けが含まれる可能性がありますが、これにより、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 サイトの他の関連記事を参照してください。

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。