2010-11-27 47 views

回答

1

是的,它應該是不同的 - (1)預計會更快。

確保首先運行主查詢,然後應用過濾器 - 因此它基本上可以處理由(query minus having)返回的數據集。

第一個查詢應該更可取,因爲它根本不會選擇這些記錄。

+0

如果這是真的,那麼我再次被問到爲什麼我不能在where子句中使用別名。這是某人(MySQL的作者?)的設計決定,這迫使我寫更復雜的查詢或失去性能。 – ripper234 2010-11-27 12:17:04

+0

返回結果集後分配別名。這就是爲什麼他們可以使用條款但不在where條款中。在SQL服務器中,您可以使用派生列,但我不知道Mysql中有任何此類選項。 – 2010-11-27 12:24:48

1

HAVING用於包含GROUP BY或返回包含聚集函數結果的單個行的查詢。例如,SELECT SUM(scores) FROM t HAVING SUM(scores) > 100可以返回一行,也可以不返回任何一行。

SQL標準認爲第二個查詢無效,並且某些數據庫系統不接受第二個查詢。

相關問題