0

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

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

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

4

2 回答 2

1

不可以。不能在同一个查询中那样使用别名。

你必须重复自己。

SELECT 
IF(SALARY/DAYS > 1000,EMPLOYEE_NAME,"NULL") AS NAME,
IF(SALARY/DAYS > 1000, TRUE, FALSE) AS VALID;
于 2012-07-19T15:02:26.610 回答
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 引擎足够聪明,可以通过一次读取数据来进行计算。

于 2012-07-19T18:31:46.127 回答