sql的having用法错误


# Write your MySQL query statement below
select employee_id,department_id
from employee
group by employee_id
having count(department_id)=1 or primary_flag='Y'

为什么这样写会报错

img

【以下回答由 GPT 生成】

这个问题是因为在MySQL中,当使用GROUP BY子句后,只有在SELECT列表中的列可以被SELECT语句选中,其他列都需要被GROUP BY子句选中或者用聚合函数进行处理。

在这个查询中,HAVING子句尝试筛选符合条件的行,但它使用了不在GROUP BY中的列。

要解决这个问题,你可以将非聚合列添加到GROUP BY子句中,或者使用一个聚合函数对其进行处理。在这个查询中,你可以将HAVING子句中的非聚合列添加到GROUP BY子句中。

下面是修改后的代码:

# Write your MySQL query statement below
SELECT employee_id, department_id
FROM employee
GROUP BY employee_id, department_id
HAVING COUNT(department_id) = 1 OR primary_flag='Y';

这样修改后,查询就可以正常执行了。



【相关推荐】



如果你已经解决了该问题, 非常希望你能够分享一下解决方案, 写成博客, 将相关链接放在评论区, 以帮助更多的人 ^-^