使用者在嘗試使用WHERE 子句中的COUNT(*) 函數過濾MyMySQL 中的資料時遇到了挑戰WHERE 子句。他們尋求一種有效的方法來完成此任務,而不使用巢狀 SELECT 語句,因為它會消耗大量資源。
使用者提供了以下偽代碼來說明他們期望的結果:
SELECT DISTINCT gid FROM `gd` WHERE COUNT(*) > 10 ORDER BY lastupdated DESC
這種方法的問題是MySQL 不支援WHERE 子句中的聚合函數,例如COUNT(*) 。為了規避此限制,使用者探索了使用巢狀 SELECT 來計算每個唯一 gid 的行數,然後相應地過濾結果的可能性。然而,這種方法被認為效率低且佔用資源。
幸運的是,MySQL 使用GROUP BY 和HAVING 子句提供了更優化的解決方案:
SELECT gid FROM `gd` GROUP BY gid HAVING COUNT(*) > 10 ORDER BY lastupdated DESC
此查詢執行以下步驟:
透過利用透過 GROUP BY 和 HAVING 子句,這種方法可以有效地達到預期結果,而無需借助嵌套的 SELECT 語句,從而提高了效能和效率。
以上是如何在 MySQL 中根據計數過濾資料而不使用嵌套 SELECT?的詳細內容。更多資訊請關注PHP中文網其他相關文章!