2011-03-22 51 views
0

我在mysql中有以下數據庫結構。查詢選擇不同類別的最近記錄

表:故事

Id Name categoryid date 
1 Pa 4   2011-03-22 09:56:15 
2 Pb 1   2011-03-23 09:56:16 
3 Pc 2   2011-03-24 09:56:17 
4 Pd 3   2011-03-25 09:56:18 
5 Pe 1   2011-03-26 09:56:19 
6 Pf 2   2011-03-27 09:56:20 
7 Pg 3   2011-03-28 09:56:22 
8 Ph 1   2011-03-29 09:56:23 

我想選擇的方式結果,因此,它應該只選擇4條記錄,1爲每個類別ID。

我需要顯示下面的結果,來自每個類別的最新記錄。

Id Name categoryid date 
8 Ph 1   2011-03-29 09:56:23 
6 Pf 2   2011-03-27 09:56:20 
7 Pg 3   2011-03-28 09:56:22 
1 Pa 4   2011-03-22 09:56:15 

是否有可能,請幫我做這個查詢。

+0

什麼是該語句的標準是什麼?不知道它可以像選擇(8,6,7,1)中的ID那樣簡單。 – RDL 2011-03-22 14:02:55

回答

3

試試這個:

SELECT * 
    FROM categories 
WHERE (categoryid, date) IN 
     (
     SELECT categoryid, MAX(date) 
      FROM categories 
      GROUP BY categoryid 
     ) 
0
select t1.* from categories as t1 
inner join (
select categoryid,max(date) as date 
from categories 
group by categoryid) as t2 
on t1.categoryid = t2.categoryid and t1.date = t2.date 


alter table categories add index i (categoryid,date); 
0
SELECT Id, Name, categoryid, date FROM story GROUP BY categoryid ORDER BY date