我有以下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