如何修复 sql 中组函数的无效使用
How to fix invalid use of group function in sql
我试图编写一个代码来查找 selected 列中的特定行,使用 where
,但是当我添加 where
它不起作用,当在放置 Where
子句之前它工作正常。
所以有表 step
, step_taken
:
step
有 id
、title
列;
step_taken
有 id
、user_id
、step_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
我试图编写一个代码来查找 selected 列中的特定行,使用 where
,但是当我添加 where
它不起作用,当在放置 Where
子句之前它工作正常。
所以有表 step
, step_taken
:
step
有 id
、title
列;
step_taken
有 id
、user_id
、step_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