拉出等于最大日期的行

时间:2016-03-24 02:02:40

标签: mysql

我的表结构如下。 ma_symbol和ma_date是此表的主键。

ma_symbol |    ma_date | ma
        A   2015-03-01    1
        A   2016-04-01    2
        B   2014-01-01    3
        B   2014-02-02    4

对于每个ma_symbol,我想拉出ma_date等于max(ma_date)的行。因此,结果将如上所示:

ma_symbol |    ma_date | ma
        A   2016-04-01    2
        B   2015-02-02    4

我尝试调整以下示例,但运行时间太长。该表有500万条记录。

Attempted Adapted Query

1 个答案:

答案 0 :(得分:0)

试试这个:

SELECT t1.*
FROM tbl t1 INNER JOIN 
    (SELECT ma_symbol, MAX(ma_date) AS max_ma_date FROM tbl GROUP BY ma_symbol) t2
    ON t1.ma_symbol = t2.ma_symbol AND t1.ma_date = t2.max_ma_date;

要在您的环境中运行此查询,请将tbl修改为您的真实表名。