ホームページ >データベース >mysql チュートリアル >MySQL テーブルを結合するときに最新の行のみを取得するにはどうすればよいですか?
MySQL テーブルを結合して最新の行のみを取得する
データ管理システムでは、複数のソースからの情報を組み合わせるためにテーブルを結合することが不可欠です。履歴データを扱う場合、結合されたテーブルの 1 つから最新の行を取得することが必要になることがよくあります。
顧客データが customer と customer_data の 2 つのテーブルに保存されている顧客データベースのシナリオを考えてみましょう。 customer テーブルには基本的な顧客情報が含まれ、customer_data には顧客のプロファイルへの変更が保存されます。顧客の情報をテーブルに表示するには、2 つのテーブルを結合する必要がありますが、必要なのは customer_data の最新の行だけです。
これを実現するには、MySQL の MAX() 関数をサブクエリとともに利用できます。 customer_data の最新の行の ID を見つけます。クエリは次のようになります。
SELECT c.*, cd.value FROM customer c LEFT JOIN customer_data cd ON c.customer_id = cd.customer_id WHERE cd.customer_id = ( SELECT MAX(customer_id) FROM customer_data WHERE customer_id = c.customer_id )
このクエリは、最初に customer テーブル (接頭辞 c. が付く) からすべての列を取得します。次に、customer_data テーブル (接頭辞 cd.) との LEFT JOIN を実行し、customer_data 内の行をフィルタリングして、各顧客の最大の customer_id (サブクエリによって決定される) を持つ行のみを含めます。
さらに、リファレンス クエリで説明したように、CONCAT() と LIKE を使用して、連結された列内の特定の値を検索できます。サンプル クエリでは、CONCAT(title,' ',forename,' ',surname) が文字列 '%Smith%' と比較されます。これにより、結合フィールドのどこかに部分文字列「Smith」を含むすべての顧客名が返されます。
以上がMySQL テーブルを結合するときに最新の行のみを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。