如何修复 sql 中组函数的无效使用

How to fix invalid use of group function in sql

我试图编写一个代码来查找 selected 列中的特定行,使用 where,但是当我添加 where 它不起作用,当在放置 Where 子句之前它工作正常。

所以有表 step, step_taken:
stepidtitle 列;
step_takeniduser_idstep_id

我想获取用户已执行超过 2 次的步骤的标题。

所以我先写了

SELECT title, COUNT(*)
FROM step 
JOIN step_taken ON step.id = step_taken.step_id 
GROUP BY title
ORDER BY COUNT(*); 

然后它显示计数为 1 到 10 的结果很好。

但是当我添加

WHERE COUNT(*) > 2

喜欢

SELECT title, count(*)
FROM step   
JOIN step_taken ON step.id = step_taken.step_id 
WHERE COUNT(*) > 2
GROUP BY title
ORDER BY COUNT(*);

我收到一个错误。

如何修复错误并获得仅大于计数值 2 的结果?

我想 select 计数大于 2 的行,但是当我使用 WHERE 子句时,它产生了一个错误。

您只能在 HAVING 子句中使用聚合函数。将您的查询更改为:

SELECT title, count(*)
FROM step join step_taken
ON step.id=step_taken.step_id 
GROUP BY title
HAVING count(*)>2
ORDER BY count(*);

请注意,使用列别名可以使查询更具可读性:

SELECT title, COUNT(*) AS title_count
FROM step 
JOIN step_taken ON step.id = step_taken.step_id 
GROUP BY title
HAVING COUNT(*) > 2
ORDER BY title_count;

请注意,在某些 DBMS 中,例如 MySQL,您还可以在 HAVING 子句中使用列别名,即

HAVING title_count > 2