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

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

Barbara Streisand
リリース: 2025-01-05 13:49:40
オリジナル
731 人が閲覧しました

How to Retrieve the Latest Status for All Services Using an Inner Join?

最新のステータスを内部結合で 2 つのテーブルから選択する

関連するデータを含む 2 つのテーブルがある場合、特定の情報を取得する必要があります両方のテーブルから。このシナリオには、Service と Status という 2 つのテーブルがあります。 Service テーブルには名前と ID が保存され、Status テーブルには各サービスに関連付けられたステータスとタイムスタンプが追跡されます。

各サービスの最新のステータスを取得するには、内部結合操作を利用できます。目標は、service_id 列に基づいて両方のテーブルの行を結合し、最新のステータス情報のみが返されるようにすることです。

残念ながら、あなたが言及したクエリは、service_id = 2 のサービスの最新ステータスのみを取得します。この制限に対処し、すべてのサービスの最新ステータスを取得するには、次の変更された SQL ステートメントを検討してください。

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;
ログイン後にコピー

最後の内部結合内のサブクエリにより、すべてのサービスが削除されます。ただし、各サービスの最新のタイムスタンプを含むステータス。 service_id を比較し、最新のタイムスタンプを照合することで、クエリが目的の結果を返すことを保証できます:

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

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

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