【发布时间】:2008-12-02 17:02:38
【问题描述】:
是否可以创建一个 MySQL 选择语句,使用表达式作为 x,然后检查 x 的值是否低于一定数量?
SELECT (mytable.field1 + 10) AS x FROM `mytable` WHERE x < 50;
【问题讨论】:
是否可以创建一个 MySQL 选择语句,使用表达式作为 x,然后检查 x 的值是否低于一定数量?
SELECT (mytable.field1 + 10) AS x FROM `mytable` WHERE x < 50;
【问题讨论】:
不,你必须实际这样做
SELECT (mytable.field1 + 10) AS x FROM `mytable` WHERE (mytable.field1 + 10) < 50;
【讨论】:
SQRT(POW(a1 - a2, 2) + POW(b1 - b2, 2)… )),所以我宁愿避免计算两次的开销。
你也可以这样做:
SELECT *
FROM (
SELECT (mytable.field1 + 10) AS X
FROM `MyTable`
) t
WHERE X < 50
在大多数情况下,使用 Nick 的解决方案可能会更好,因为它允许服务器在流程的早期应用 where 子句。但是,有时您可能会希望这样做,以便在其他因素推动性能的复杂查询中更加清晰。
【讨论】:
为此,我将表达式存储在变量中并在多个位置插入它们:
$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;
(可能与另一个答案中建议的子选择同样低效)。
【讨论】: