我写了这个问题:

SELECT COUNT(ProductID) AS ProNumber, userID
FROM orderLog WHERE time >= CURDATE()
GROUP BY userID ORDER BY ProNumber DESC

我想这样做:
SELECT COUNT(ProductID) AS ProNumber, userID
FROM orderLog WHERE time >= CURDATE() AND ProNumber > 1000
GROUP BY userID ORDER BY ProNumber DESC

但没用。
为什么?如何修复此查询?

最佳答案

因为在执行WHERE子句时,MySQL还不知道您的别名ProNumber。在WHERE子句中不应使用列别名
如果只希望保留COUNT(*)>1000的记录,则应使用HAVING子句,该子句根据以下条件筛选分组后的记录:

SELECT COUNT(ProductID) AS ProNumber, userID
FROM orderLog
WHERE time >= CURDATE()
GROUP BY userID
HAVING COUNT(ProductID) > 1000
ORDER BY ProNumber DESC

如果这不是你想要的,添加解释,因为它不清楚

关于mysql - MySQL在哪里计算组数,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/50905253/

10-11 22:27