开发者社区> 问答> 正文

分组最大值?mysql

我有一张表格,试图从中检索每种证券的最新头寸:

桌子:

我查询创建表: SELECT id, security, buy_date FROM positions WHERE client_id = 4

+-------+----------+------------+ | 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 | | 18084 | KERX | 2013-02-20 | | 18249 | KERX | 0000-00-00 | +-------+----------+------------+ 我一直在弄乱基于此页面的查询版本,但似乎无法获得想要的结果。

这是我一直在尝试的方法:

SELECT t1.id, t1.security, t1.buy_date FROM positions t1 WHERE buy_date = (SELECT MAX(t2.buy_date) FROM positions t2 WHERE t1.security = t2.security) 但这只是返回我:

+-------+----------+------------+ | id | security | buy_date | +-------+----------+------------+ | 27 | PCS | 2013-01-19 | +-------+----------+------------+ 我正在尝试获取每个证券的最大/最新购买日期,因此结果将为每个证券具有最新购买日期的一行。任何帮助是极大的赞赏。

编辑:头寸的ID必须与最大购买日期一起返回。

展开
收起
保持可爱mmm 2020-05-17 12:33:45 308 0
1 条回答
写回答
取消 提交回答
  • 您可以使用此查询。您可以节省75%的时间。我检查了更多数据集。子查询需要更多时间。

    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;来源:stack overflow

    2020-05-17 12:36:46
    赞同 展开评论 打赏
问答排行榜
最热
最新

相关电子书

更多
搭建电商项目架构连接MySQL 立即下载
搭建4层电商项目架构,实战连接MySQL 立即下载
PolarDB MySQL引擎重磅功能及产品能力盛大发布 立即下载

相关镜像