这段sql代码抛出了一个

其中不允许使用聚合函数

SELECT o.ID ,  count(p.CAT)
FROM Orders o
INNER JOIN Products p ON o.P_ID = p.P_ID 
WHERE count(p.CAT) > 3
GROUP BY o.ID;

我怎样才能避免这个错误?

推荐答案

WHERE条款替换为HAVING,如下所示:

SELECT o.ID ,  count(p.CAT)
FROM Orders o
INNER JOIN Products p ON o.P_ID = p.P_ID 
GROUP BY o.ID
HAVING count(p.CAT) > 3;

HAVINGWHERE类似,两者都用于过滤结果记录,但HAVING用于过滤聚合数据(当使用GROUP BY时).

Mysql相关问答推荐

用于将具有多个状态更改日期列的单行转换为具有状态和时间戳的多行的SQL查询

仅获取我不是最后一个 comments 者的博客帖子

根据现有行 Select 月份日期

Mysql:使用like Select 查询

将时间戳四舍五入到最接近的半小时而不遗漏丢失的数据

如何找到每个user_id每个产品的买家类型数量?

从 MySQL 8.0.12 升级到 8.0.32 时出错

使用 autocommit = 0 和 InnoDB 表的 LOCK TABLES 检测死锁

过滤查询结果

判断一列中的多个值并返回值 1 或 0

了解 SQL 中的元组语法

通过 Gorm 查询模型

为什么 ORDER BY 'id' 'desc' 不返回语法错误?

什么是 PyMySQL,它与 MySQLdb 有何不同?它会影响 Django 部署吗?

MySQL时区更改?

ASP.NET EntityFramework 获取数据库名称

MySQL 中的 VARCHAR(255) 和 TINYTEXT 字符串类型有什么区别?

在 Yii2 中执行原始 SQL 查询?

在 WHERE 子句中使用 mysql concat()?

表被指定了两次,既作为更新的目标,又作为 mysql 中数据的单独源