Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/10.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
使用聚合函数(MySQL)_Mysql_Database - Fatal编程技术网

使用聚合函数(MySQL)

使用聚合函数(MySQL),mysql,database,Mysql,Database,我听过好几次,当我们使用聚合函数时,在一些查询中使用HAVING或groupby是一种很好的做法(几乎是必须的)。有人能再解释一下吗? 就我所知,这将有助于我们总结结果,但在性能上有什么大的区别吗?在我们用MAX函数搜索某个列的行的查询中,我们必须有HAVING或GROUP BY吗?我认为在这种情况下,阅读文档可能非常有用 如果在不包含GROUPBY子句的语句中使用group函数,则相当于对所有行进行分组 正如您所看到的,如果不使用groupby将意味着不使用任何聚合函数。所以这实际上是一个

我听过好几次,当我们使用聚合函数时,在一些查询中使用HAVING或groupby是一种很好的做法(几乎是必须的)。有人能再解释一下吗?
就我所知,这将有助于我们总结结果,但在性能上有什么大的区别吗?在我们用MAX函数搜索某个列的行的查询中,我们必须有HAVING或GROUP BY吗?

我认为在这种情况下,阅读文档可能非常有用

  • 如果在不包含GROUPBY子句的语句中使用group函数,则相当于对所有行进行分组
正如您所看到的,如果不使用
groupby
将意味着不使用任何聚合函数。所以这实际上是一个必须做的事情,而不是qn选项

了解更多信息

假设您有一张桌子

'name' | 'sex'
'jeff' | 'M'
'jen'  | 'F'
'mike' | 'M'

SELECT sex, count(*) FROM myTable GROUP BY sex
这会回来的

'M', 2
'F', 1

基本上,您需要GROUPBY语句,因为您需要告诉数据库如何聚合结果集(即收集相似的行)。

好吧,听起来不错。但是,如果我必须在表中的所有数据中查找具有最大列值的行,我应该使用MAX there还是ORDER by column_NAME DESC?哪一个更快、更正确?Max只会根据group by选择Max value,而order by会根据您使用的列对所有结果进行排序,这实际上是不同的。顺便说一下,如果我的答案是正确的,而且你的答案也会被夸大的话,你可能会考虑接受它,所以你也会帮助那些在未来有类似问题的人。我知道你那样看不是一回事。但是让我们看看另一个例子。Mike,200美元,注册用户Annie,400美元,注销用户Tony,300美元,管理员——在本例中,我可以使用MAX来获取$的最大值,并按$上的DESC排序。这将给出基本相同的结果,除了按顺序,我得到所有行,MAX只返回一行。在这个例子中,哪一个使用起来更快更好?好吧,发布另一个问题,这样我可能会帮你解决问题,错误地按enter键。我更新了我的问题:)这不是我的问题。。。如果您想对某些行进行特殊计数,可以在此处使用group by和count组合。当我想以最高价格获得行时,我提出了这个问题,然后我使用了MAX函数。然而,我后来发现在这种情况下使用MAX并不是最好的解决方案。我听说订购DESC是更好的解决方案。订单描述实际上比最大订单快吗?