使用groupby时,Mysql计数返回空

时间:2011-06-18 11:19:24

标签: mysql

这个问题在堆栈溢出之前多次询问过。我尝试了所有解决方案,但没有一个能帮助。

我的查询是: -

 SELECT COUNT(*) FROM  
  table_campaign_referralmail t1 
  INNER JOIN table_user_information t2 ON t1.refferal_id=t2.user_id 
  GROUP BY t1.refferal_id

返回空结果

t1为空,t2有一些记录

尝试查询和结果

SELECT CASE  WHEN COUNT(*) IS NULL THEN '0' ELSE COUNT(*) END 
FROM   table_campaign_referralmail t1 INNER JOIN table_user_information t2 ON 
t1.refferal_id=t2.user_id GROUP BY t1.refferal_id

返回空结果

COALESCE(count(*),0)计数瞬间(*)

返回空结果

COUNT(t1.*)计数瞬间(*)

返回错误结果

修改

t2有用户的基本信息。 t1是推荐表。因此,它有用户数 推荐的朋友。所以它可能会多次出现。 像

refferal_id  friend_id 
   1            2
   1            3

所以,我想显示每个用户的推荐数量

喜欢

user_id   number of referal
1               2

这就是我在做的事情。

请告诉我谢谢

2 个答案:

答案 0 :(得分:0)

“t1为空,t2有一些记录”当然它会返回空,因为你正在做INNER JOIN。如果没有任何记录,您如何计算按t1分组的refferal_id条记录?

告诉我们您想要做什么,我们可能会想出一个重新安排的查询来完成您想要做的事情。

答案 1 :(得分:0)

这将为您提供每位用户的推介数量:

SELECT COUNT(t1.refferal_id)
  FROM table_user_information t2
  LEFT JOIN table_campaign_referralmail t1 ON t1.refferal_id=t2.user_id 
 GROUP BY t2.user_id