2011-12-02 2 views
2

내가이 쿼리를 사용하고는 Query를 좋아 :PHP는 MySQL의 대부분은 지난 100 개 기록

SELECT * from likes GROUP BY url ORDER BY count(*) DESC LIMIT 6 

내 테이블 '좋아'에서 가장 좋아하는 기록을 가져. 그것은 모든 시간의 가장 좋아하는 콘텐츠를 가져 오기 위해 완벽하게 작동합니다.

하지만 지금은 지난 100 개의 레코드 중에서 가장 좋아하는 레코드 6 개를 선택하고 싶습니다.

검색어는 무엇입니까?

+0

당신은 우리에게 좋아하는의 테이블 구조를 보일 수 있는가? –

답변

2
SELECT * FROM (select * from likes order by date desc limit 100) xx 
Group by URL order by count(*) limit 6 
+0

+1 이것은 바른 대답입니다. – xdazz

+0

데이터가 올바르게 작동하지는 않지만 .... 가장 먼저 좋아하는 것을 표시하지 않음을 의미합니다. –

+0

죄송합니다. 계산 후 주문 DESC를 추가하십시오 (*). – Sparky

2

마지막 100 개 항목의 기본 키를 가져 와서 쿼리의 범위를 좁 힙니다. Auto-Increment 키를 사용하면 매우 쉽습니다.

SELECT * from likes 
    GROUP BY url 
    ORDER BY count(*) DESC 
    WHERE ID > MAX(ID)-100 
    LIMIT 6 
+0

+1 내가 타이핑을 시작한 것보다 훨씬 간단합니다. –

+1

정말로 작동합니까? 구문 오류 옆에 레코드가 삭제되고 MAX (ID) -100이 오류가 발생하면 어떻게 될까요? – ajreal

+0

나는 이미 테이블에서 시리얼 필드를 사용하지 않고 닮은 것을 알아 냈습니다 .... 도움을 주셔서 감사합니다 :) –