我正在尝试使以下语句生效:

SELECT t1.id, t1.row2
FROM table1 t1
JOIN table2 t2 ON t1.rowx = t2.rowx
JOIN table3 t3 ON t2.rowy = t3.rowy
GROUP BY t1.row2
HAVING COUNT(t2.rowx) < t3.maximum_size

语句可以工作并提供输出,但是许多t3.maximum_size字段都是NULL字段,这会阻止语句按预期工作。
有没有办法让COUNT(*)another_number包含NULL值?
例子:
10 < 20 // true
20 < 20 // false
18 < null // true (as null represents no maximum size in my query)

(我确实检查了其他与此问题相关的问题,但我没有看到有人帮助完成此特定任务-如果我遗漏了一个问题,请指出正确的方向。)

最佳答案

将having子句改为:

Having count(t2.rowx) < t3.maximum_size or t3.maximum_size is null

回想起来,一个更好的SQL答案是:
Having count(t2.rowx) < max(t3.maximum_size) or max(t3.maximum_size) is null

原始语法在mysql中有效,但在大多数数据库中无效。而且,我认为这是一个糟糕的SQL。在聚合上下文中引用“t3.MimuluMulthSimple”的用法实际上等价于“t3.MimuluMulthSimple”的任何值。最好说清楚。

关于mysql - MySQL语句HAVING COUNT(*)<t.row-包括空值,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/10560730/

10-11 14:07