MySQL用于计算组的位数

时间:2018-06-18 08:17:42

标签: mysql

我写了这个查询:

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

但它不起作用。 为什么?我该如何解决这个问题?

2 个答案:

答案 0 :(得分:2)

因为在执行WHERE子句时MySQL尚不知道您的别名ProNumber。您不应在WHERE子句

中使用列别名

如果您只想保留COUNT(*)>的记录; 1000,你应该使用HAVING子句来过滤GROUP BY后的记录:

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

如果这不是您想要的,请添加说明,因为它不清楚

答案 1 :(得分:0)

让我们试试这个: - )

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