Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/67.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
具有COUNT(*)的MySQL语句<;t、 行-包括空值_Mysql_Sql - Fatal编程技术网

具有COUNT(*)的MySQL语句<;t、 行-包括空值

具有COUNT(*)的MySQL语句<;t、 行-包括空值,mysql,sql,Mysql,Sql,我目前正在努力使以下声明生效: 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 (我确实检查了与该问题相关的其他SO问题,但我没有看到一个有助于完成此特定任务的问题-如果我遗漏了一个问题,请为我指出正确的方向

我目前正在努力使以下声明生效:

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

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

将having子句更改为:

Having count(t2.rowx) < t3.maximum_size or t3.maximum_size is null
具有计数(t2.rowx)
回想起来,更好的SQL答案是:

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

原始语法适用于mysql,但不适用于大多数数据库。此外,我认为这是一个糟糕的SQL。在聚合上下文中,使用“t3.maximum_size”实际上等同于“t3.maximum_size的任何值”。最好是明确的。

将having子句更改为:

Having count(t2.rowx) < t3.maximum_size or t3.maximum_size is null
具有计数(t2.rowx)
回想起来,更好的SQL答案是:

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

原始语法适用于mysql,但不适用于大多数数据库。此外,我认为这是一个糟糕的SQL。在聚合上下文中,使用“t3.maximum_size”实际上等同于“t3.maximum_size的任何值”。最好是明确的。

我认为您需要聚合
t3。最大大小也是:

HAVING COUNT(t2.rowx) < MAX(t3.maximum_size)
具有计数(t2.rowx)
我认为您需要聚合
t3。最大大小也应为:

HAVING COUNT(t2.rowx) < MAX(t3.maximum_size)
具有计数(t2.rowx)
可能您可以使用NVL


计数(t2.rowx)

这意味着如果t3.maximum_size返回为NUll,则匹配将以零进行

希望对您有所帮助

也许您可以使用NVL


计数(t2.rowx)

这意味着如果t3.maximum_size返回为NUll,则匹配将以零进行


希望有帮助

这句话合法吗<代码>t3。最大大小既不是
分组依据
字段,也不是聚合函数,因此这会触发错误。@dasblinkenlight:这是MySQL。你的ANSI SQL逻辑在这里没有位置。这句话合法吗<代码>t3。最大大小既不是
分组依据
字段,也不是聚合函数,因此这会触发错误。@dasblinkenlight:这是MySQL。您的ANSI SQL逻辑在这里没有位置。没有-HAVING子句与WHERE子句相同,只是您可以在其中使用聚合。HAVING子句并不要求其中的所有内容都使用聚合。@OMGPonies在既不是
group by
列也不是聚合函数参数的任何列上使用
HAVING
group by
有意义吗?MySQL支持使用HAVING子句引用列别名而不使用派生表/内联视图。HAVING也不需要GROUP BY…不-HAVING子句与WHERE子句相同,只是您可以在其中使用聚合。HAVING子句并不要求其中的所有内容都使用聚合。@OMGPonies在既不是
group by
列也不是聚合函数参数的任何列上使用
HAVING
group by
有意义吗?MySQL支持使用HAVING子句引用列别名而不使用派生表/内联视图。拥有不需要任何一个团队。。。