2014-03-13 40 views
0

当我执行以下命令它告诉我从一组MySQL的统计记录

#1247 - 参考 'StockCount' 不支持(参照组功能)

SELECT stockSymbol, count(*) as StockCount 
FROM US500 
group by stockSymbol 
AND StockCount > 100 
ORDER BY stockSymbol DESC 

打算什么为什么它不工作。

+1

聚合条件需要通过'having'来完成,而不是在where子句中。 –

+1

用'HAVING'替换''和' – AgRizzo

+0

谢谢你做的伎俩! – XK8ER

回答

2

SELECT和任何WHERE子句在任何聚合GROUP BY函数之前应用。

如果你尝试这个,你会得到关于未知列StockCount错误的WHERE子句中:

SELECT stockSymbol, count(*) as StockCount 
FROM US500 
WHERE StockCount > 100 
GROUP BY stockSymbol 
ORDER BY stockSymbol DESC 

相反,使用HAVING发生后SELECTWHERE,并GROUP BY适用于从汇总结果的条件GROUP BY

SELECT stockSymbol, count(*) as StockCount 
FROM US500 
/* WHERE clause would go here */ 
GROUP BY stockSymbol 
HAVING StockCount > 100 
ORDER BY stockSymbol DESC 

ORDER BY最后发生,所以你也可以参考聚合列那里,如果哟你想:

SELECT stockSymbol, count(*) as StockCount 
FROM US500 
GROUP BY stockSymbol 
HAVING StockCount > 100 
ORDER BY StockCount DESC 

您的查询中的子句的顺序应该给你一些他们处理的顺序的想法。例如。 GROUP BY子句必须在WHERE子句和HAVING必须在GROUP BY之后。