在where子句中包含PHP函数?
问题描述:
我想在WHERE子句中使用floorRating
,但出现错误:Unknown column in where clause
。在where子句中包含PHP函数?
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
。
如何获取此类查询的工作?
答
它不能是任何PHP函数,它必须是MYSQL之一。你很幸运,因为地板也存在。
当where
不工作,尝试having
。
HAVING floorRating = 1
答
的问题不在于你想使用MySQL的函数FLOOR
,那就是你不能在你的WHERE
子句中使用列别名(虽然你不能在MySQL中使用PHP函数 - 这是一种不同的语言)。
这是因为WHERE
子句评估以前你SELECT
S和其他报表,这意味着它知道行与之前别的(简化)上班。
您需要使用HAVING
而不是在这些情况下,其中将工作。
1应该是一个int不是字符串(从它的外观),你可以使用'HAVING'来代替它,虽然它不是性能。 – Ktash 2012-01-28 17:26:07