2013-08-25 29 views
0

即使沒有匹配MYsql中的條件,我也想獲取最新記錄。在mysql中獲取最新的記錄,但沒有匹配條件

例如,我想根據產品類型分組選擇2013年1月20日的數據,但它不符合此條件,因此它將獲得這些產品類型的最新日期(2013-01-19)或2013-01-15)。

Coding: 

Select date from tblproducttype where 
date=(select max(date) from tblproducttype group by type) where date='2013-01-20' 


Table product type 

ID Type Date 
1 2  2013-01-20 
2 2  2013-01-20 
3 2  2013-01-14 
4 3  2013-01-19 
5 4  2013-01-16 
6 4  2013-01-13 

結果應該是以下幾點:

ID Type Date 
1 2  2013-01-20 
2 2  2013-01-20 
4 3  2013-01-19 
5 4  2013-01-16 

對於結果,我想要的數據2013年1月20日與其他產品的最新數據結合起來。

最後,我們只能得到那些產品類型的最新日期。

如何在MYSQL中做到這一點?

問候。

+1

請張貼您的企圖。 –

回答

0

我想這是你想要什麼:

SELECT p.* 
FROM product_type p 
JOIN (SELECT Type, MAX(Date) maxdate 
     FROM prodct_type 
     GROUP BY Type) m 
ON p.Type = m.Type and p.Date = m.maxdate 

m子查詢查找每個類型的最新日期。然後,聯接會在該日期查找每種類型的所有行。

要篩選出的條件,在子查詢中使用HAVING子句:

SELECT p.* 
FROM product_type p 
JOIN (SELECT Type, MAX(Date) maxdate 
     FROM prodct_type 
     GROUP BY Type 
     HAVING maxdate != '2013-01-20') m 
ON p.Type = m.Type and p.Date = m.maxdate 

或凡在主查詢子句:

SELECT p.* 
FROM product_type p 
JOIN (SELECT Type, MAX(Date) maxdate 
     FROM prodct_type 
     GROUP BY Type) m 
ON p.Type = m.Type and p.Date = m.maxdate 
WHERE maxDate != '2013-01-20' 
+0

如果我們設定日期條件日期= 2013-01-20,但是也列出其他產品類型的最新數據。所以如何在subjquery中做到這一點? –

+0

我不明白「設置日期條件」是什麼意思?你的意思是你只需要在該日期的結果,而不是使用每種類型的最新日期? – Barmar

+0

您不需要子查詢或連接,只需要一個普通的WHERE子句。 – Barmar

0

您可以通過數據彙總做到這一點得到最大日期,然後加入這個信息回原表:

select t.id, t.type, t.date 
from t join 
    (select type, max(date) as maxdate 
     from t 
     group by type 
    ) tsum 
    on t.type = tsum.type and t.date = tsum.maxdate 
order by id; 
相關問題