ホームページ > データベース > mysql チュートリアル > SQL 結合を使用して各サービスの最新ステータスを取得するにはどうすればよいですか?

SQL 結合を使用して各サービスの最新ステータスを取得するにはどうすればよいですか?

Barbara Streisand
リリース: 2025-01-04 22:16:44
オリジナル
850 人が閲覧しました

How to Retrieve the Latest Status for Each Service Using SQL Joins?

内部結合と制限を使用した最新のステータス データ

この課題には、Service と Status の 2 つのテーブルから各サービスの最新のステータスを取得することが含まれます。 Service テーブルにはサービス情報が含まれますが、Status テーブルにはタイムスタンプ付きのレコードでステータス更新が保持されます。

これを実現するには、内部結合を使用して、service_id 列に基づいてテーブルを結合します。ただし、各サービスの最新ステータスを選択するときに課題が発生します。次のステートメントは、最後のサービスの最新ステータスのみを取得します。

SELECT ser.id, ser.name, a.status, a.timestamp
from Service ser
  inner join (select * from status
              order by Status.timestamp
              DESC limit 1) as a
    on a.service_id = ser.id
ログイン後にコピー

各サービスの最新ステータスを取得するには、ネストされたクエリが必要です。

SELECT 
  ser.id, 
  ser.name, 
  s.status, 
  s.timestamp 
FROM Service ser 
INNER JOIN status as s ON s.service_id = ser.id
INNER JOIN
(
   SELECT
     service_id, 
     MAX(timestamp) AS MaxDate
   FROM status 
   GROUP BY service_id
) AS a  ON a.service_id = s.service_id 
       AND a.MaxDate = s.timestamp;
ログイン後にコピー

ネストされたクエリは、各サービスの最大タイムスタンプ。これは、そのサービスの最新のステータスを表します。次に、結果がメイン クエリと結合されて、各サービスの最新のステータス データが表示されます。

このアプローチを使用すると、目的の出力が得られます。

id name status timestamp
1 Test1 OK October, 15 2015 09:08:07
2 Test2 OK October, 15 2015 10:15:23

以上がSQL 結合を使用して各サービスの最新ステータスを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート