我有三个mysql表:文章,类别和标签。
我希望获得链接到文章的所有类别和标签的列表,并按照每个文章发生的次数进行排序。
文章表格包含以下列:article_id和name
类别和标签表包含以下列:article_id和tid。
最终我正在寻找tids。
以下是表格的示例:
ARTICLES
article_id name
1 Article 1
2 Article 2
3 Article 3
4 Article 4
CATEGORIES
article_id tid
1 100
2 100
3 100
4 101
TAGS
article_id tid
1 200
2 200
3 200
4 200
3 201
4 201
我希望看到的是:
RESULTS
tid count
200 4
100 3
201 2
101 1
因为tid 200使用4次,tid 100使用3次,tid 201使用2次,tid 101使用1次。
和想法?
答案 0 :(得分:2)
假设您tid
和categories
tags
永远不会相同
SELECT a.tid, a.count
FROM
(SELECT tid, COUNT(article_id) AS count
FROM categories
GROUP BY tid
UNION ALL
SELECT tid, COUNT(article_id) AS count
FROM tags
GROUP BY tid) a
ORDER BY a.count DESC
如果您有重复项,请使用:
SELECT a.tid, COUNT(article_id) AS count
FROM
(SELECT tid, article_id
FROM categories
UNION ALL
SELECT tid, article_id
FROM tags) a
GROUP BY a.tid
ORDER BY COUNT(article_id) DESC
<强>结果强>
| TID | COUNT | --------------- | 200 | 4 | | 100 | 3 | | 201 | 2 | | 101 | 1 |