我想提交一个查询,如果计算结果为TRUE将返回一个值,如果为FALSE则返回FALSE。
SELECT
IF(VALID,EMPLOYEE_NAME,"NULL") AS NAME,
IF(SALARY/DAYS > 1000, TRUE, FALSE) AS VALID;
似乎在查询结束之前,MYSQL不知道VALID var
所以我的问题是:
有没有可能的方法来评估该查询的 VALID ?
答案 0 :(得分:1)
没有。别名不能像在同一查询中那样使用。
你必须重复自己。
SELECT
IF(SALARY/DAYS > 1000,EMPLOYEE_NAME,"NULL") AS NAME,
IF(SALARY/DAYS > 1000, TRUE, FALSE) AS VALID;
答案 1 :(得分:1)
您也可以使用子查询执行此操作:
SELECT IF(VALID,EMPLOYEE_NAME,"NULL") AS NAME, VALID
from (select t.*, IF(SALARY/DAYS > 1000, TRUE, FALSE) AS VALID
from t
) t
我不是复制逻辑的忠实粉丝。我更喜欢使用子查询来定义变量。这使得更改定义变得更加容易。一般来说,这不会影响性能,因为(大多数)sql引擎足够智能,可以通过数据读取进行计算。