2015-09-07 68 views
0

我为什么要这样写:为什么我应该使用聚合函数而不是在哪里?

Having count(id) > 1 

,而不是这样的:

Where count(id) > 1 

这只是为英语?

我想,如果发明where子句可以使它接受聚合

或者是有一个原因的程序员?在加载数据或类似的东西?

+0

根本不是。第一个作品是适当的SQL。第二个不起作用。 –

回答

2

的原因是,SQL以一定的顺序评估项目例如

  • 识别有问题的表
  • 应用where子句缩小行
  • 取值从柱
  • (由条款组)应用聚集体
  • 应用累计限额(具有条款)
  • 应用排序(order by子句)

如果您试图在“where”子句中评估一个聚合,它实际上没有意义,因为它需要在聚合之前应用“where”子句。

4
WHERE

上操作的行,HAVING上的行的集合( “基团”)进行操作。集合函数不能用于单行,只是没有任何意义。

MySQL documentation状态:

组(聚合),关于值的集合操作功能[...]如果你使用不包含GROUP BY子句的声明一组功能,它相当于分组在所有行上。

相关问题