指定されたテーブルから各証券の最新のポジションを取得しようとしています。これを実現するには、次のクエリを使用します。
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 サイトの他の関連記事を参照してください。