解決MySQL「無效分組函數使用」錯誤
在MySQL中,遇到「無效分組函數使用」錯誤訊息時,理解WHERE和HAVING子句之間的差異至關重要。
問題:
您的查詢檢索至少由兩個供應商提供的零件ID (pids)。但是,您收到以下錯誤:
<code>1111 - Invalid use of group function</code>
原因:
此錯誤源自於子查詢中WHERE子句的錯誤使用。您試圖在對行進行分組和聚合之前使用WHERE子句過濾行,這不是預期的行為。
解:
解決方案是用HAVING子句取代WHERE子句。 HAVING在MySQL對行進行分組並計算聚合之後運行,讓您可以根據這些聚合來過濾結果。
改寫子查詢:
用HAVING子句取代子查詢中的WHERE子句:
<code>( -- pid属于以下集合: SELECT c2.pid -- pids集合 FROM Catalog AS c2 -- 来自catalog表 WHERE c2.pid = c1.pid HAVING COUNT(c2.sid) >= 2)</code>
說明:
此修改後的子查詢將在按pid分組併計算與每個pid關聯的不同供應商ID (sid) 之後正確過濾行。 HAVING子句確保僅選擇計數至少為2的行。
透過適當地使用HAVING子句,您可以解決「無效分組函數使用」錯誤並獲得所需的結果。
以上是如何修復MySQL的「組函數無效使用」錯誤?的詳細內容。更多資訊請關注PHP中文網其他相關文章!