mysql - 如何加入mysql

标签 mysql count left-join

如果计数为空,我如何才能得到计数为 0。当我运行以下语句时:

SELECT S.shortText, COUNT(O.selectionID) AS C FROM Opinions O
LEFT JOIN Selections S ON S.id=O.selectionID
WHERE S.qID=3 AND MONTH(O.entryDate)=5 
GROUP BY S.shortText

 shortText         C    
 ----------------  ---- 
 Leisure           0       <------ this line missing 
 Business          3
 University visit  1

我的选择表

 id     shortText        
 -----  ---------------- 
 1      Leisure          
 2      Business         
 3      University visit

我的意见表

 id     entryDate              selectionID    
 -----  ---------------------  -------------- 
 186    5/21/2012 11:34:37 AM  2              
 205    5/22/2012 9:13:25 AM   2              
 216    5/22/2012 9:43:14 AM   2              
 237    5/24/2012 8:24:00 PM   3   

最佳答案

如果您想要将 Leisure 行显示为 0,即使 opinions 表中没有匹配的记录。使用子查询如下:

select t1.shorttext,if(t2.c is null,0,t2.c)as c from selections t1 left join (

SELECT s.id,S.shortText, COUNT(O.selectionID) AS C FROM selections S
LEFT JOIN opinions O ON S.id=O.selectionID
WHERE  MONTH(O.entryDate)=5 
GROUP BY S.shortText
  ) t2 on t1.id=t2.id

http://sqlfiddle.com/#!2/8ca3e/11

关于mysql - 如何加入mysql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12950261/

相关文章:

ios - Core Data 属性计数并在 TableView 中显示结果

mysql - 从 count() 中选择 max()

c++ - 显示正面和反面被抛出的时间 C++

MySQL错误,未知原因

php - MySQL 从数组中获取行

mysql - 安装mym以使用matlab连接mysql

mysql 选择计数联合

php - 提交表单时如何将日期和时间添加到数据库中?

MySql 查询多个表的数据

c# - LINQ to SQL - 多个左连接、分组依据、同一张表上的左连接、计数