Mysql 对列中的不同值进行计数,如果在Where子句中找不到,则返回零
这是我的桌子: 我正在运行这个查询Mysql 对列中的不同值进行计数,如果在Where子句中找不到,则返回零,mysql,sql,select,Mysql,Sql,Select,这是我的桌子: 我正在运行这个查询 SELECT fruits,COUNT(*) as count FROM meva where owner = 'bill' GROUP BY fruits ORDER BY count 我得到的结果是 如果与所有者不匹配,是否可以将其他水果项目设置为0 Fruit | count Apple , 2 Mango , 0 Banana , 0 Strawberry ,0 Appricot, 0 Alfonso , 0
SELECT fruits,COUNT(*) as count FROM meva where owner = 'bill' GROUP BY fruits ORDER BY count
我得到的结果是
如果与所有者不匹配,是否可以将其他水果项目设置为0
Fruit | count
Apple , 2
Mango , 0
Banana , 0
Strawberry ,0
Appricot, 0
Alfonso , 0
非常感谢您对我的问题稍加修改。
谢谢使用SUM()
和CASE
SELECT fruits,
SUM(CASE WHEN owner = 'bill' THEN 1 ELSE 0 END) as `count `
FROM meva
GROUP BY fruits
ORDER BY fruits
或者使用IF
(仅在MySQL
中)
- 是的,上面有一个很好的答案。你也可以试试这个
SELECT fruits,
SUM(Coalesce(owner='bill',0)) as counts
FROM meva
GROUP BY fruits
ORDER BY fruits
;
只要
SUM(owner='bill')
就足够了:)@jackgood-one:D真的很好!我想,在我的逻辑中,这就是不管如何合并的工作原理@Zan让我知道这是怎么回事:)也应该在MYSQL和SQL Server中工作。
SELECT fruits,
SUM(Coalesce(owner='bill',0)) as counts
FROM meva
GROUP BY fruits
ORDER BY fruits
;