MYSQL:在查询中获取具有默认值的两列和第三标称列

时间:2019-02-03 20:07:04

标签: mysql

这是我正在做的查询:

SELECT (CASE WHEN study_id   = NULL THEN "" ELSE study_id END) AS id, 
       (CASE WHEN study_date = NULL THEN "" ELSE study_id END) AS sdate, 
       DATE_ADD(CURDATE(), INTERVAL -25 DAY) AS daytick 
FROM tEyeResults WHERE DATE(study_date) = DATE_ADD(CURDATE(), INTERVAL -25 DAY)

如果存在与我要搜索的学习日期匹配的学习日期,此查询将返回study_id,study_date和daytick列。如果没有满足WHERE条件的任何行,则查询不返回任何行。

我想要做的是对其进行修改,以便如果没有匹配WHERE条件的行,则返回值为“”,“”,daytick的一行。

这种情况是我试图做到这一点的原因,但是查询的功能与我刚才所做的一样:

SELECT study_id, 
       study_date, 
       DATE_ADD(CURDATE(), INTERVAL -25 DAY) AS daytick 
FROM tEyeResults WHERE DATE(study_date) = DATE_ADD(CURDATE(), INTERVAL -27 DAY)

编辑:

根据评论中的建议,我已经尝试过:

SELECT COALESCE(study_id, "") AS id, 
       COALESCE(study_date, "") AS sdate, 
       DATE_ADD(CURDATE(), INTERVAL -25 DAY) AS daytick 
FROM tEyeResults WHERE DATE(study_date) = DATE_ADD(CURDATE(), INTERVAL -25 DAY)

结果仍然没有任何行。

2 个答案:

答案 0 :(得分:2)

您可以仅使用日间记号创建结果集,并将其与表外部连接:

SELECT    COALESCE(study_id, "") AS id, 
          COALESCE(study_date, "") AS sdate, 
          daytick
FROM      ( SELECT DATE_ADD(CURDATE(), INTERVAL -25 DAY) AS daytick ) ref
LEFT JOIN tEyeResults 
       ON daytick = DATE(study_date)

答案 1 :(得分:0)

来自链接Here 尝试这样

CASE study_id WHEN  NULL THEN "" ELSE study_id END

不要在WHEN之后使用CASE WHEN column=xyz之类的列名