从MySql视图中选择最新记录

时间:2017-06-12 06:59:36

标签: mysql

我有一个sql view,看起来像下面的数据

leadId  status  statusTime
--------------------------
1361    new     2017-06-12 11:57:33
1358    new     2017-06-12 11:20:46
1358    warm    2017-06-12 11:21:20
1358    closed  2017-06-12 11:56:57

您可以看到leadId 13583 lead status,最后一个是latest。所以我想要如下表所示的记录

leadId  status  statusTime
--------------------------
1361    new     2017-06-12 11:57:33
1358    closed  2017-06-12 11:56:57

我怎样才能实现这一目标?感谢

2 个答案:

答案 0 :(得分:0)

在MySQL中处理此问题的一种规范方法是将您的视图加入子查询,该子查询标识每个leadId的最新状态时间。此联接过滤掉除最近记录之外的所有记录。

SELECT v1.*
FROM yourView v1
INNER JOIN
(
    SELECT leadId, MAX(statusTime) AS max_status_time
    FROM yourView
    GROUP BY leadId
) v2
    ON v1.leadId     = v2.leadId AND
       v1.statusTime = v2.max_status_time

另一种方法是使用相关的子查询,但这可能不如上面给出的那样好。

Demo

答案 1 :(得分:0)

select leadId,status,statusTime 
from your_view
where (leadId,statusTime) 
     IN (select leadId,MAX(statusTime) as maxStatusTime
         from your_view
         GROUP BY leadId) 

首先找到最新statusTime的条目,然后使用它来获取详细信息