当没有找到值时,MySql如何显示零

时间:2014-06-22 14:19:32

标签: mysql

我收到了这个问题:

SELECT ent_video_tipo, count(ent_video_tipo) as cnt 
FROM entradas 
WHERE entradas.ent_user= '1' 
GROUP BY ent_video_tipo 
ORDER BY cnt DESC

这会给我:

ent_video_tipo|cnt
       3      | 3
       1      | 3
       4      | 1
       2      | 1

当我做的时候

SELECT ent_video_tipo, count(ent_video_tipo) as cnt 
FROM entradas 
WHERE entradas.ent_user= '2' 
GROUP BY ent_video_tipo 
ORDER BY cnt DESC

我得到了

ent_video_tipo|cnt
       1      | 4
       2      | 2
       3      | 2

我希望ent_video_tipo = 4收到零。喜欢这个

ent_video_tipo|cnt
       1      | 4
       2      | 2
       3      | 2
       4      | 0

ent_video_tipo有自己的表格:

type_id|type_name
   1   |    a
   2   |    b
   3   |    c
   4   |    d

1 个答案:

答案 0 :(得分:5)

好的,因为ent_video_tipo有自己的类型,你可以使用左连接作为

SELECT 
evt.type_id, 
coalesce(count(e.ent_video_tipo),0) as cnt 
FROM ent_video_tipo evt
left join entradas e on e.ent_video_tipo = evt.type_id
AND e.ent_user= '2' 
GROUP BY evt.type_id 
ORDER BY cnt DESC ;

<强> DEMO

更新这是另一种方式

select
evt.type_id,
coalesce(cnt,0) as cnt
from ent_video_tipo evt
left join
(
  select
  ent_video_tipo,
  count(ent_video_tipo) as cnt
  FROM entradas 
  WHERE ent_user= '2' 
  GROUP BY ent_video_tipo 
)e
on e.ent_video_tipo = evt.type_id

<强> DEMO