自我加入表视图

时间:2013-07-25 09:20:27

标签: mysql sql

我有一个包含非唯一潜在客户的表格,我需要对其进行分组,以包含唯一的,最近的(date}列潜在客户。

id      lead_id status  date
-----   ------  --      -------------------
26199   666842  Ok      2013-06-19 12:00:09

56199   376842  Ok      2013-06-19 12:00:09
58322   376842  Ok      2013-06-21 12:11:59
60357   376842  Ok      2013-06-24 12:22:00
61431   376842  Ok      2013-06-25 12:18:02
62365   376842  Ok      2013-06-26 12:16:04
63202   376842  Ok      2013-06-27 12:14:08
63983   376842  Er      2013-06-28 12:12:06

因此,在上面的示例中,我应该有两个潜在客户: ID为2619963983,因为他们都是MAX(date),而GROUP BY为lead_id。

我试过左连接,最大和组聚合,不知道我做错了什么。

SELECT a.lead_id, MAX(a.created) AS created FROM RawLead a LEFT JOIN RawLead b ON b.created = a.created GROUP BY a.lead_id

不幸的是我无法使用子查询,因为我需要在视图中显示它们。

1 个答案:

答案 0 :(得分:3)

没有子查询:)

select
l1.*
from
lead l1
left join lead l2 on l1.date < l2.date and l1.lead_id = l2.lead_id
where l2.id is null 

看到它在sqlfiddle中正常工作。

LEFT JOIN的工作原理是,当l1.date处于其最大值时,没有l2.date具有更大的值,并且l2行值将为NULL。