Php 如何选择MySQL中的所有类别并统计每个类别的文章数
类别表:Php 如何选择MySQL中的所有类别并统计每个类别的文章数,php,mysql,categories,Php,Mysql,Categories,类别表: id, name --------- 1 cat1 2 cat2 3 cat3 4 cat4 条款表: id, cid, title -------------- 1 1 title1 2 3 title2 3 1 title3 4 2 title4 如何选择MySQL中的所有类别并统计每个类别的文章数?我需要一个mysql查询,它将选择所有类别和属于每个类别的文章总数,并按类别id排序 预期产出表: +-------
id, name
---------
1 cat1
2 cat2
3 cat3
4 cat4
条款表:
id, cid, title
--------------
1 1 title1
2 3 title2
3 1 title3
4 2 title4
如何选择MySQL中的所有类别并统计每个类别的文章数?我需要一个mysql查询,它将选择所有类别和属于每个类别的文章总数,并按类别id排序
预期产出表:
+-------+-------+
| name | count |
+-------+-------+
| cat1 | 2 |
| cat2 | 1 |
| cat3 | 1 |
| cat4 | 0 |
+-------+-------+
试试这个:
SELECT c.`name`, count(a.cid) as count FROM category
LEFT JOIN article
ON c.id = a.cid
GROUP BY a.cid
我希望这能奏效。请查收
select
Category.name.
ifnull(count(Article.cid),0) as count
FROM
Category
LEFT JOIN
Article
on
Article.cid=Category.id
group by
Category.Id
您还可以使用子查询,如
SELECT c.name,(select count(*) from article where cid = c.id) as count FROM cat c WHERE 1 GROUP BY c.id
提示:
左连接
<代码>分组依据。是否已尝试某项操作?寻找答案?嘿,用谷歌搜索2分钟……为什么要用DV搜索这个答案?
select
Category.name.
ifnull(count(Article.cid),0) as count
FROM
Category
LEFT JOIN
Article
on
Article.cid=Category.id
group by
Category.Id
SELECT c.name,(select count(*) from article where cid = c.id) as count FROM cat c WHERE 1 GROUP BY c.id