我正在开发一个 SQL 查询,该查询将在我的网站中实现以显示表格。这个特定的查询只会用它计数的数字填充一个表格单元格。
目前,由于下面的最终 INNER JOIN,它仅在表 5 中找到主键(column1)少于 3 次时才计算行数。到目前为止,查询工作正常。
SELECT COUNT (a.column1) AS test
FROM Table1 a
INNER JOIN Table2 b ON […]
INNER JOIN Table3 c ON […]
INNER JOIN Table4 d ON […]
INNER JOIN (SELECT column1 FROM Table 5 GROUP BY column1 HAVING COUNT (column1)<3) e ON e.column1=a.column1
WHERE a.column2 IS NULL
问题是我还想计算未出现在 Table5 中(但存在于 Table1 中)的行。目前我让它工作的唯一方法是添加以下代码
AND a.column1 NOT IN (SELECT f.column1 FROM Table5 f)
但是,它仅在不包含最终 INNER JOIN 时才有效,我无法让它同时处理这两个约束。基本上,总而言之,如果主键(column1)在 table5 中出现的次数少于 3 次,或者它根本不在 table5 中,我希望对行进行计数。
谢谢你。