我如何用标准来计算mySQL条目
-
04-10-2019 - |
题
所以通常你可以做
SELECT COUNT(field.id) FROM table WHERE field.id > 100
计数(字段)将返回具有字段标准的条目数。ID> 100
但是,如果您要计算用具有标准的条目,例如
SELECT COUNT(field.id), field.id * 10 AS foo FROM table HAVING foo > 100
在这种情况下,该代码不起作用。
如何计算通过“ have”子句指定标准的条目?
提前致谢
解决方案
好, COUNT
作品 前 HAVING
应用于 结果集. 。因此,如果您需要计算它们的数字 - 您必须用另一个查询包装查询。
SELECT COUNT(*) FROM (
SELECT field.id * 10 AS foo FROM table HAVING foo > 100
)
其他提示
我无法运行任何一个查询 - 他们给我一个1140的错误,因为“使用子句没有组的总汇总”(即: COUNT(field.id)
)。一切似乎根本与聚合无关,只有参考列别名进行比较的能力...
最广泛支持的手段是:
SELECT field.id * 10 AS foo
FROM table
WHERE field.id * 10 > 100
MySQL确实支持引用列的别名 GROUP BY
或者 HAVING
条款。它不需要使用反击,但是我已经看到了在存在背景之前无法使用的实例(非保留单词):
SELECT field.id * 10 AS foo
FROM table
HAVING `foo` > 100
我不建议这种方法 - 它在SQL Server上得到支持,但不支持Oracle ...
这 HAVING
条款就像 WHERE
条款,区别在于 HAVING
子句支持汇总功能,而无需将它们包裹在子查询中。
免责声明 - 我仅在SQL Server上进行了测试
在这种情况下,只能对整个返回的集合执行任何聚合查询。首先,你不能运行
SELECT COUNT(field.id), field.id * 10 AS foo FROM table HAVING foo > 100
因为field.ID不包含在定义组或聚合函数的子句中;它只是没有编译。
话虽如此,以下SQL-
SELECT COUNT(field.id) FROM table HAVING COUNT(field.id) > 100
如果 计数 大于100。如果不是,您将无法获得结果。
您有特定的问题吗?您要计算什么?
不隶属于 StackOverflow