比较'where'语句中'as'表达式的结果

4 mysql sql

是否可以创建一个使用表达式作为x的MySQL select语句,然后检查x的值是否低于一定数量?

SELECT (mytable.field1 + 10) AS x FROM `mytable` WHERE x < 50;
Run Code Online (Sandbox Code Playgroud)

Nic*_*rdi 6

不,你必须真的这样做

SELECT (mytable.field1 + 10) AS x FROM `mytable` WHERE (mytable.field1 + 10) < 50;
Run Code Online (Sandbox Code Playgroud)


Joe*_*orn 5

你也可以这样做:

SELECT *
FROM (
    SELECT (mytable.field1 + 10) AS X
    FROM `MyTable`
) t
WHERE X < 50
Run Code Online (Sandbox Code Playgroud)

在大多数情况下,使用Nick的解决方案可能更好,因为它允许服务器在流程的早期应用where子句.但是,为了在复杂查询中清晰起见,有时您会想要这样做,其他因素正在推动性能.