按记录数从数据库顺序中选择

时间:2015-04-02 12:28:04

标签: php mysql

我有一张这样的表:

Tags:

id | tag   | news_id
---+-------+---------
1  | tag1  | 1
2  | tag2  | 1
3  | tag3  | 1
4  | tag1  | 2
5  | tag2  | 2
6  | tag3  | 3
7  | tag1  | 3
8  | tag3  | 4
9  | tag1  | 5

如何选择tag字段,但按标签数量排序? 我的意思是这样的输出:

tag1,tag3,tag2

2 个答案:

答案 0 :(得分:5)

SELECT t.tag
FROM table t
GROUP BY t.tag
ORDER BY COUNT(t.tag) desc

答案 1 :(得分:1)

要获得所需的输出,请使用 GROUP_CONCAT()以及 GROUP BY 以逗号连接行。像这样,

SELECT GROUP_CONCAT(t.tag SEPARATOR ',') AS str_tags
FROM
(
   SELECT tag
   FROM tags
   GROUP BY tag
   ORDER BY COUNT(tag) DESC
) AS t;

子查询返回输出如下:

 tag
-----
 tag1
 tag3
 tag2

在外部查询中使用GROUP_CONCAT(),用逗号连接结果行:

tag1,tag3,tag2

希望它有所帮助,谢谢。