2015-09-07 63 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子句的聲明一組功能,它相當於分組在所有行上。

相關問題