我的MYSQL数据库中有不同的表,我需要创建一个SELECT查询,在选择行之前检查某些值。
基本上是3个表(新闻,标签和news_tags)。
这是我的3个不同的表格(当然简化)
举例说明:
新闻:
id | status
1 | 1
2 | 1
3 | 0
标签:
tag_id | tag_name
1 | name 1
2 | name 2
news_tags:
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
感谢您的帮助。
答案 0 :(得分:3)
您需要将其与news
表一起加入,以便查询status
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
LEFT JOIN news
ON news.id = news_tags.news_id
WHERE news.status = 1
GROUP BY news_tags.tag_id
ORDER BY count DESC