如何根据丰度订购行?

时间:2017-06-11 18:48:49

标签: mysql sql sql-order-by

这是我的问题:

SELECT     posts.id, posts.title, posts.body, posts.keywords 
FROM       posts
INNER JOIN pivot ON pivot.post_id = posts.id
INNER JOIN tags ON tags.id = pivot.tag_id
WHERE      tags.name IN ('html', 'php')
GROUP BY   posts.id

它会选择标有phphtml或两者的所有帖子。现在我需要在查询中添加ORDER BY子句,并根据丰度对结果进行排序。我的意思是我需要将包含phphtml标记的帖子放在结果的顶部。

我该怎么做?

1 个答案:

答案 0 :(得分:2)

学习使用表别名。它使查询更容易编写和阅读。但是,您只需要一个合适的ORDER BY

SELECT p.id, p.title, p.body, p.keywords 
FROM posts p INNER JOIN
     pivot pi
     ON pi.post_id = p.id INNER JOIN
     tags t
     ON t.id = pi.tag_id
WHERE t.name IN ('html', 'php')
GROUP BY p.id
ORDER BY COUNT(DISTINCT t.name) DESC;