您正在尝试从给定表中检索每个证券的最新位置。要实现此目的,您可以使用以下查询:
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、安全性和该证券的 buy_date 。
此查询比您之前尝试过的基于子查询的方法更有效,因为它不需要多次遍历持仓表。相反,它使用单个联接来识别每个证券的最新行,这使得处理大型数据集的速度显着加快。
以上是如何高效地查找数据库中每种证券的最新位置?的详细内容。更多信息请关注PHP中文网其他相关文章!