我有以下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
而我得到的表是這樣的:
正如我在截圖中已經強調,ID爲76和77行是重複的。在我的申請案例中,這是衡量「流行度」。我希望能夠到:
-
其中「數據」被重複成一排(我知道我可以用GROUP BY做到這一點)
- 令行的「人氣」,然後再通過
- 集團行「創建日期」。所以,如果有3行與相同的「數據」時,我想,要先返回,接着排,計數2,等等
'GROUP BY數據ORDER BY COUNT( id)DESC,p.creation_date,t.name DESC'應該可以工作 – Vatev
你的意思是按照creation_date的順序是什麼,因爲流行的數據會有多個?您可以按min(p.creation_date)或max(p.creation_date)進行排序。 – ysth
@ysth好點!我認爲在這種情況下按MIN(p.creation_date)排序會更好。 – Redandwhite