2013-07-25 52 views
0

我有一個包含非唯一索引的表格,我需要對其進行分組以包含唯一的最新(列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

可惜的是我不能使用子查詢,因爲我需要出示他們的看法。

+0

你可以在視圖中使用子查詢,不是嗎? – asantaballa

+0

我嘗試了一個時出錯。 – acid

+0

好的。可能還想將其作爲問題發佈。我已經完成了(雖然不得不承認不在MySQL中)沒有問題。 – asantaballa

回答

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。

+0

太棒了!非常感謝。你能簡單解釋一下嗎,所以我不會複製粘貼它? – acid

+1

添加說明。 – fancyPants

相關問題