我的 MYSQL 数据库中有不同的表,我需要创建一个 SELECT 查询,该查询将在选择一行之前检查某些值。
它基本上是 3 个表(新闻、标签和 news_tags)。
- news 包含有关新闻的信息。
- 标签 关于标签的信息。
- news_tags 存储新闻使用哪个标签。
这是我的 3 个不同的表(当然是简化的)
为了显示:
消息:
id | status
1 | 1
2 | 1
3 | 0
标签:
tag_id | tag_name
1 | name 1
2 | name 2
新闻标签:
id | news_id | tag_id
1 | 1 | 1
2 | 1 | 2
3 | 2 | 1
4 | 3 | 1
5 | 3 | 2
现在,起初我想知道每个标签被使用了多少次。所以我想出了这个查询
SELECT tags.tag_name, news_tags.tag_id, COUNT(*) as count
FROM news_tags
LEFT JOIN tags
ON tags.tag_id = news_tags.tag_id
GROUP BY news_tags.tag_id
ORDER BY count DESC
这给了我以下输出
tag_name | count
name 1 | 3
name 2 | 2
现在我的问题是我不想计算那些news.status = 0
; 因此,如果我们看一下我的示例,在news
表格中,带有 的行id = 3
具有status = 0
. count
不应该在news_id = 3
表中的位置生效news_tags
。
基本上所需的输出应该是
tag_name | count
name 1 | 2
name 2 | 1
感谢您的帮助。