2011-03-22 3 views
0

mysql에 다음 db 구조가 있습니다.다른 categoryid로 다른 최근 레코드를 선택하는 쿼리

테이블 : 스토리

나는 그것이 각 카테고리 ID 만 4 기록, 1을 선택해야합니다 있도록하는 방식으로 결과를 선택합니다
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 

.

다음과 같은 결과를 각 카테고리의 최신 기록에 표시해야합니다.

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

가 문에 대한 기준이 무엇입니까? ID가 (8,6,7,1) 인 곳을 선택하는 것만 큼 간단 할 수 있다는 것을 모른 채. – RDL

답변

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 
관련 문제