这是我正在做的查询:
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)
结果仍然没有任何行。
答案 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
之类的列名