Mysql 在where子句中包含PHP函数?

Mysql 在where子句中包含PHP函数?,mysql,Mysql,我想在WHERE子句中使用布局,但我得到错误:WHERE子句中的未知列 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` 在这种情况下,我

我想在WHERE子句中使用
布局
,但我得到错误:
WHERE子句中的未知列

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`
在这种情况下,我得到了组函数的
无效使用


我如何才能让这种查询工作?

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

中的
不起作用时,尝试
使用

HAVING floorRating = 1

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

这是因为
WHERE
子句在
SELECT
s和其他语句之前进行了求值,这意味着它在处理其他语句之前知道要处理哪些行(以简化)


在这些情况下,您需要使用
HAVING
,这将起作用

1应该是一个int而不是字符串(从外观上看),您可以使用
HAVING
代替where,尽管它的性能不如where。