我需要一种方法来定义一个变量来保存 MYSQL 中表达式的结果,以便我可以在整个查询中使用该变量。
所以这是可能的:
SELECT
IF(VALID,EMPLOYEE_NAME,"NULL") AS NAME, /** <-- Note *VALID*
IF(VALID,ID,"NULL") AS ID, /** <-- And here...
IF(VALID,OCCUPATION,"NULL") AS OCCUPATION, /** <-- And here...
IF((**LONG EXPRESSION**), TRUE, FALSE) AS VALID; /** <-- Taken from here
LONG EXPRESSION 可以是非常长的表达式,我需要为 IF 语句中的每个返回列放置它,有很多 IF。
我的直觉告诉我,我应该能够像在每一种过程语言中一样这样做:
$var = LONG_EXPRESSION(....);
if($var) {..};
if($var) {..};
if($var) {..};
if($var) {..};
这样它更合乎逻辑并且更不容易出错。易于维护、可读,甚至可能经过优化。
在 MYSQL 中有对应的吗?
因此,为每一行执行定义一个参数?
最佳答案
您只需要一个子查询:
SELECT IF(VALID,EMPLOYEE_NAME,"NULL") AS NAME, /** <-- Note *VALID*
IF(VALID,ID,"NULL") AS ID, /** <-- And here...
IF(VALID,OCCUPATION,"NULL") AS OCCUPATION,
...,
VALID
from (select t.*, IF((**LONG EXPRESSION**), TRUE, FALSE) AS VALID
from t
) t
关于php - 完成此 SQL 查询所需的方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11571496/