我有一个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 1358
有3 lead status
,最后一个是latest
。所以我想要如下表所示的记录
leadId status statusTime
--------------------------
1361 new 2017-06-12 11:57:33
1358 closed 2017-06-12 11:56:57
我怎样才能实现这一目标?感谢
答案 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
另一种方法是使用相关的子查询,但这可能不如上面给出的那样好。
答案 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
的条目,然后使用它来获取详细信息