我在这里有一个工作查询:
SELECT tlt.name AS theme, COUNT(*) AS nsets
FROM tlt
INNER JOIN sets
ON tlt.id = sets.theme_id
GROUP BY tlt.name
ORDER BY nsets DESC;
Run Code Online (Sandbox Code Playgroud)
但是当我添加 WHERE 子句时,sqlite 在 WHERE 子句“附近”抛出一个语法错误
SELECT tlt.name AS theme, COUNT(*) AS nsets
FROM tlt
INNER JOIN sets
ON tlt.id = sets.theme_id
GROUP BY tlt.name
ORDER BY nsets DESC;
Run Code Online (Sandbox Code Playgroud)
我很困惑为什么这个简单的 WHERE 子句会破坏这个查询。
一个WHERE子句必须之前GROUP BY,而不是之后。但是您不能在WHERE子句中使用别名或聚合函数,因此您需要使用HAVING COUNT(*) > 50您当前拥有WHERE子句的位置。
SELECT tlt.name AS theme, COUNT(*) AS nsets
FROM tlt
INNER JOIN sets
ON tlt.id = sets.theme_id
GROUP BY tlt.name
HAVING COUNT(*) > 50
ORDER BY nsets DESC;
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
44 次 |
| 最近记录: |