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