用户在尝试使用 WHERE 子句中的 COUNT(*) 函数过滤 MySQL 中的数据时遇到了挑战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 语句,从而提高性能和效率。
免责声明: 提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发到邮箱:[email protected] 我们会第一时间内为您处理。
Copyright© 2022 湘ICP备2022001581号-3