获取与aggrigate相关联的后退行分钟

时间:2016-09-06 10:24:31

标签: mysql sql min

嗨我想知道是否有办法从与min相关的行中获取信息。因此,在以下示例中,我想简单地找回每个客户的最小(日期)和相关信息。

   Cust_id            Date              information
   -----------------------------------------------------
    12345           2015-04-03          blue hat 
    12345           2015-04-05          red scarf
    12345           2015-04-02          blue hat
    12345           2015-04-08          yellow submarine
    54321           2015-04-12          yellow submarine

结果如下:

   Cust_id            Date              information
   -----------------------------------------------------
    12345           2015-04-02          blue hat 
    54321           2015-04-12          yellow submarine

目前,为了解决这个问题,我会使用临时表或子查询来获取每个客户的最小值(日期)并在该日期加入表格。

SELECT cust_id
,      MIN(date)
INTO   #TempTable
FROM   dataset
GROUP BY cust_id


SELECT cust_id
,      date
,      information
FROM dataset A INNER JOIN #TempTable B ON A.cust_id = B.cust_id 
                                       AND A.date = B.date

这种方法有效,但我想在一次拉动中有一种更清洁,更简单的方法。也许是一个我不知道的功能?

非常感谢任何帮助,建议,示例或来源,

谢谢,

鲍勃

1 个答案:

答案 0 :(得分:0)

不是创建临时表,而是在子查询中获取最小值,并在外部查询中连接回主表:

SELECT A.cust_id
,      A.date
,      A.information
FROM dataset A
INNER JOIN (SELECT cust_id
            ,      MIN(date) as mindate
            FROM   dataset
            GROUP BY cust_id
            ) B ON A.cust_id = B.cust_id AND A.date = B.mindate