2011-12-21 2 views
0

저는 배우가 수행 한 작업이있는 테이블이 있으며 가장 최근의 작업 중 10 개를 반환하려고합니다. 배우가이 목록에서 고유해야합니다. 'created'는 시간/날짜 스탬프입니다. 가장 효율적인 방법은 무엇입니까? 나는 작동하는 다음 쿼리를 생각해 냈다 :SQL : 가장 최근의 작업을 반환하지만 결과는 10 개로 제한됩니다.

SELECT * 
FROM activities a 
JOIN 
(SELECT actor, MAX(created) created 
FROM activities 
WHERE comment_type <> 'profile.status' 
GROUP BY actor) t ON (a.actor = t.actor AND a.created = t.created) LIMIT 10 

테이블이 결국 꽤 커질 수있다.

답변

0

하위 쿼리에 제한 10을 넣을 수 있습니다. 당신은 단지 배우가 필요한 경우는 확인을 보이는 것을 제외하고

SELECT * FROM activities a 
INNER JOIN (
      SELECT 
       actor 
       , MAX(created) created 
      FROM activities 
      WHERE comment_type <> 'profile.status' 
      GROUP BY actor 
      LIMIT 10 OFFSET 0) t 
     ON (a.actor = t.actor AND a.created = t.created) LIMIT 10 
0

당신이

SELECT DISTINCT actor -- and any other actor specific columns that are unique to the actor 
FROM activities 
WHERE comment_type <> 'profile.status' 
ORDER BY Created DESC 
LIMIT 10 
을 수행 할 수 있습니다
관련 문제