ホームページ >データベース >mysql チュートリアル >一意のセンサー ID ごとに最新のセンサー データを効率的に取得するにはどうすればよいですか?
各キー値の最近のタイムスタンプを持つ行の取得
センサー データを含むテーブルでは、最新の行を選択する必要があります。一意のセンサー ID ごとに。この課題は、目的のクエリがグループ化が指定されていないためにエラーを返す場合に発生します。
この問題を解決するには、2 つの効果的なアプローチがあります。
アプローチ 1: ネストされたクエリ
このメソッドは、ネストされたクエリを利用して各センサーの最大タイムスタンプを特定しますID:
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;
アプローチ 2: ウィンドウ関数
あるいは、スライディング ウィンドウ上でウィンドウ関数 MAX() を利用して、目的の結果を達成することもできます。 :
SELECT sensorID, MAX(timestamp) OVER (PARTITION BY sensorID ORDER BY timestamp) AS max_timestamp, sensorField1, sensorField2 FROM sensorTable ORDER BY sensorID, max_timestamp;
どちらのアプローチも、最新のデータ ポイントを表すセンサー ID ごとに 1 つの行を効果的に選択します。選択は、特定のデータベース環境とパフォーマンス要件によって異なります。
以上が一意のセンサー ID ごとに最新のセンサー データを効率的に取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。