我有两个表,一个叫做日历,另一个叫做事件.日历中可以有多个日历和多个事件.我想选择每个日历,同时获取日历中的事件数量.
这就是我所拥有的:
SELECT C.*, COUNT(*) AS events FROM `calendars` AS C
LEFT JOIN `events` E ON C.ID=E.calendar
GROUP BY C.ID
Run Code Online (Sandbox Code Playgroud)
但这不起作用.没有事件的项目仍然返回1.有任何想法吗?
Mar*_*ith 18
你需要使用
COUNT(E.calendar)
Run Code Online (Sandbox Code Playgroud)
在没有匹配的行上,它的值将是NULL,NULL并且不计算值.
问题是你计算行数,而没有事件的日历仍然有一行他的日历.
试试这个:
SUM(case when e.Calendar is null then 0 else 1 end)
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
16019 次 |
| 最近记录: |