ホームページ > データベース > mysql チュートリアル > データベース内の各証券の最新のポジションを効率的に見つけるにはどうすればよいでしょうか?

データベース内の各証券の最新のポジションを効率的に見つけるにはどうすればよいでしょうか?

Susan Sarandon
リリース: 2025-01-05 02:07:40
オリジナル
881 人が閲覧しました

How to Efficiently Find the Most Recent Position for Each Security in a Database?

グループごとの最大値

指定されたテーブルから各証券の最新のポジションを取得しようとしています。これを実現するには、次のクエリを使用します。

SELECT p1.id, 
       p1.security, 
       p1.buy_date 
       FROM positions p1
LEFT JOIN
            positions p2
                ON p1.security = p2.security
                   AND p1.buy_date < p2.buy_date
      WHERE 
      p2.id IS NULL;
ログイン後にコピー

このクエリでは、左結合を使用して、ポジション テーブルの各行を同じセキュリティを持つ他のすべての行と比較します。 buy_date 列は、どの行が最新であるかを判断するために使用されます。次に、WHERE 句によって、それぞれのセキュリティの最新ではない行がフィルターで除外されます。

このクエリの結果は、最新の ID、セキュリティ、およびセキュリティを含む、セキュリティごとに 1 行のテーブルになります。

このクエリは、ポジション テーブルを複数回通過する必要がないため、以前に試したサブクエリベースのアプローチよりも効率的です。代わりに、単一の結合を使用して各証券の最新の行を識別するため、大規模なデータセットの処理が大幅に高速になります。

以上がデータベース内の各証券の最新のポジションを効率的に見つけるにはどうすればよいでしょうか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

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