MYSQL中的列计算比较

时间:2012-07-19 15:00:25

标签: mysql sql

我想提交一个查询,如果计算结果为TRUE将返回一个值,如果为FALSE则返回FALSE。

SELECT 
IF(VALID,EMPLOYEE_NAME,"NULL") AS NAME,
IF(SALARY/DAYS > 1000, TRUE, FALSE) AS VALID;

似乎在查询结束之前,MYSQL不知道VALID var 所以我的问题是:
有没有可能的方法来评估该查询的 VALID

2 个答案:

答案 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引擎足够智能,可以通过数据读取进行计算。