在where子句中包含PHP函数?

时间:2012-01-28 17:22:33

标签: mysql

我想在WHERE子句中使用floorRating,但我收到错误:Unknown column in where clause

SELECT ID,
floor(SUM(Rating) / COUNT(*)) AS `floorRating`
FROM `Reviews` 
WHERE floorRating = 1
GROUP BY `ID`

我也试过这个但是没有用:

SELECT ID,
FROM `Reviews` 
WHERE floor(SUM(Rating) / COUNT(*)) = 1
GROUP BY `ID`

在此我得到Invalid use of group function

如何让这种类型的查询起作用?

2 个答案:

答案 0 :(得分:1)

它不能是任何PHP函数,它必须是MYSQL。你很幸运,因为地板也存在。

where不起作用时,请尝试having

HAVING floorRating = 1

答案 1 :(得分:1)

问题不在于您尝试使用MySQL函数FLOOR,而是您不能在WHERE子句中使用列别名(尽管您不能使用MySQL中的PHP函数 - 它是一种不同的语言)。

这是因为WHERE子句在<{strong> 之前的<{1}}和其他语句中进行了评估,这意味着它知道在其他任何事情之前使用哪些行(为了简化)。

在这些工作的情况下,您需要使用SELECT