2013-04-14 6 views
1

다음 SQL 쿼리가 있습니다.반복 횟수를 기준으로 MySQL을 어떻게 날짜순으로 정렬합니까?

SELECT p.`id`, p.`data`, p.`title`, p.`creation_date`, t.`name` AS 'tag' 

    FROM `post_tag` pt, `post` p, `tag` t 

    WHERE p.`id` = pt.`post` 
     AND pt.`tag` = t.`id` 
     AND p.`author` <> '1' 
     AND (t.`name` = 'Programming' 
      OR t.`name` = 'Photography' 
      OR t.`name` = '[...]') 

    ORDER BY p.`creation_date`, t.`name` DESC 

는 그리고 내 결과 테이블은 다음과 같다 : 나는 스크린 샷에서 강조했듯이

sql result

는, ID 76 및 77 행이 반복됩니다. 내 응용 프로그램의 경우, 그것은 "인기"의 척도입니다.

    "데이터"에 의해 다음, 첫 번째 행 "인기"에 의해 하나의 행 (내가 GROUP BY와 함께이 작업을 수행 할 수있어)
  1. 주문으로 반복
  2. 그룹 행 "나는 할 수 있도록하려면 생산 일". 같은 "데이터"3 개 행이 경우에 따라서는 나는 등, 즉 2의 수와 행 다음에 먼저 반환 할
+0

'COUNT BY 데이터 ORDER BY GROUP (id) DESC, p.creation_date, t.name DESC'가 작동해야합니다 – Vatev

+0

인기있는 데이터에 둘 이상이있을 것이므로 creation_date에 의한 주문이란 무엇을 의미합니까? min (p.creation_date) 또는 max (p.creation_date)로 주문할 수 있습니다. – ysth

+0

@ysth 좋은 지적! 나는 MIN (p.creation_date)에 의한 주문이이 경우에 더 좋을 것이라고 생각한다. – Redandwhite

답변

1
... group by p.data order by count(*) desc, p.creation_date, t.name desc 
+1

각 URL에 별도의 타임 스탬프가있는 경우 주문할 결정적 날짜를 얻으려면 'MIN (p.creation_date)'를 사용할 수 있습니다. –

+0

두 분 모두에게 감사드립니다. 3 분 안에 받아 들일 수있어. – Redandwhite

+0

그런데 왜 카운트 (*)가 여기서 작동합니까? – Redandwhite

관련 문제