php - 完成此 SQL 查询所需的方法

标签 php mysql sql

我需要一种方法来定义一个变量来保存 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/

相关文章:

php - 似乎无法使 mysqli_insert_id 工作

php - SendGrid Web API 退回电子邮件 header 响应

php - 以秒为单位获取两个 MYSQL 日期时间列之间的差异

Mysql "Where"子句的多个参数

php - 如何在新表中记录 MySQL 查询

php - 如何使用 CodeIgniter 获取浏览器和平台信息?

java - Spring Boot批处理与MySQL DB总是生成主键为0

php - PostgreSQL 查询 mySQL

sql - 运行总计列的复杂 SQL 查询

mysql - 如何远程拉取mysql数据库?