ホームページ >データベース >mysql チュートリアル >MySQL テーブルを関連テーブルの最新の行のみに結合するにはどうすればよいですか?

MySQL テーブルを関連テーブルの最新の行のみに結合するにはどうすればよいですか?

Patricia Arquette
Patricia Arquetteオリジナル
2025-01-01 11:18:11632ブラウズ

How to Join a MySQL Table to Only the Most Recent Row in a Related Table?

MySQL: 最新の行のみへの結合

このシナリオにはテーブル customer と customer_data があり、customer_data には履歴が含まれています。顧客ごとに変化します。目標は、customer_data の最新の行のみに結合しながら顧客情報を取得することです。

これを達成するには、WHERE 句内でサブクエリを使用して、customer_data 内の各顧客の最大 ID を特定します。以下に示すように、LEFT JOIN 構文を使用して、このサブクエリを customer テーブルに結合します。

SELECT c.*,
FROM customer AS c
LEFT JOIN customer_data AS d ON d.customer_id = c.customer_id AND d.ID = (
  SELECT MAX(ID)
  FROM customer_data
  WHERE customer_id = c.customer_id
)
WHERE name LIKE '%Smith%'
LIMIT 10, 20;

このクエリ内:

  • LEFT JOIN により、customer テーブルのすべての行が確実に結合されます。 customer_data に対応する行がない場合でも、結果に含まれます。
  • 内のサブクエリWHERE 句は、customer_data 内の各顧客の最大 ID を計算します。
  • 次に、サブクエリの結果が customer_data 内の ID 列と比較され、最新の行のみが選択されます。

このアプローチでは、顧客ごとに最新のエントリを効果的に分離し、それらを顧客テーブルに結合してさらに処理します。

以上がMySQL テーブルを関連テーブルの最新の行のみに結合するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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