是否可以创建一个使用表达式作为x的MySQL select语句,然后检查x的值是否低于一定数量?
SELECT (mytable.field1 + 10) AS x FROM `mytable` WHERE x < 50;
答案 0 :(得分:6)
不,你真的要这样做
SELECT (mytable.field1 + 10) AS x FROM `mytable` WHERE (mytable.field1 + 10) < 50;
答案 1 :(得分:5)
你也可以这样做:
SELECT *
FROM (
SELECT (mytable.field1 + 10) AS X
FROM `MyTable`
) t
WHERE X < 50
在大多数情况下,使用Nick的解决方案可能更好,因为它允许服务器在流程的早期应用where子句。但是,为了在复杂查询中清晰起见,有时您会想要这样做,其他因素正在推动性能。
答案 2 :(得分:0)
我将表达式存储在变量中并在多个位置插入它们:
$x_sql = '(mytable.field1 + 10)';
$SQL = "SELECT $x_sql AS x FROM mytable WHERE $x_sql < 50";
或者,如果您不为效率低下而烦恼,请使用HAVING子句:
SELECT (mytable.field1 + 10) as x FROM mytable HAVING x < 50;
(可能与另一个答案中建议的subselect效率相同)。