我写了这个问题:
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/