mysql - MySQL:如果 GROUPS 中的所有项目都不匹配,则 LEFT JOIN 的 WHERE 条件
问题描述
我有两个表,出版物和问题。我想显示出版物列表和每个出版物的问题数。这很简单:
SELECT p.id
, p.title
, COUNT(i.id) AS countOfIssues
FROM publications p
LEFT
JOIN issues i
ON p.id = i.publicationId
GROUP
BY p.id;
但是,问题可以将“已删除”列设置为 1,我只想计算未删除的问题。另外,如果没有问题,我想显示发布行,所以:
SELECT p.id
, p.title
, COUNT(i.id) AS countOfIssues
FROM publications p
LEFT
JOIN issues i
ON p.id = i.publicationId
WHERE i.deleted = 0
OR i.deleted IS NULL
GROUP
BY p.id;
但是,当出版物中的所有问题都已删除 = 1 时,这种情况会失败。在这种情况下,缺少此发布行。
如何改善 WHERE 条件?
解决方案
哦,很简单,条件必须在JOIN里面:
SELECT p.id, p.title, COUNT(i.id) AS countOfIssues FROM publications p LEFT JOIN issues i ON p.id=i.publicationId AND i.deleted=0 GROUP BY p.id;
推荐阅读
- python - Lambda 函数中 if 语句的语法错误
- javascript - 匹配两个标签之间的多行文本
- php - 我正在尝试使用 HTML 和 PHP 与我联系,但在发送消息时出现错误
- jquery - 为什么 datepicker 不能在 angularJs 代码中工作?
- c - 如何使 strstr 高效,以便它不会捕获不需要的子字符串
- pandas - Pandas 将 df 1 中的过滤列除以 df 2 警告和奇怪行为的过滤列
- json - 如何在颤动中解析这个 Json 数据
- json - Oracle JSON_TABLE 到 PostgreSQL - 如何从 JSON 列中的第二个层次键进行搜索
- xamarin.forms - 支持 iPadOS 13.4 上鼠标和触控板的内容效果(突出显示、抬起和悬停)
- powerbi - 当我们对power bi表中的列值求和时,如果值为null或空白,那么如何在power中将其显示为0?