首页 >数据库 >mysql教程 >如何使用 SQL 查找每个证券的最新位置?

如何使用 SQL 查找每个证券的最新位置?

Susan Sarandon
Susan Sarandon原创
2025-01-04 12:43:41999浏览

How to Find the Most Recent Position for Each Security Using SQL?

分组最大值

问题:

从以下位置获取每个证券的最新位置表:

id security buy_date
26 PCS 2012-02-08
27 PCS 2013-01-19
28 RDN 2012-04-17
29 RDN 2012-05-19
30 RDN 2012-08-18
31 RDN 2012-09-19
32 HK 2012-09-25
33 HK 2012-11-13
34 HK 2013-01-19
35 SGI 2013-01-17
36 SGI 2013-02-16
KERX 2013-02-20
KERX 0000-00-00

解决方案:

以下查询检索每种证券的最长购买日期以及相应的 ID:

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;

此查询使用左连接有效地找到每个证券的最新位置。它比较每种证券的购买日期,并仅选择不存在较晚购买日期的行。与基于子查询的方法相比,这种优化的解决方案可确保准确的结果和更快的执行时间。

以上是如何使用 SQL 查找每个证券的最新位置?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn