我有一张这样的表:
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
答案 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
希望它有所帮助,谢谢。