这是我正在执行的查询:
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_date 与我正在搜索的日期相匹配,则此查询将返回 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)
结果仍然没有得到任何行。
最佳答案
您可以创建一个仅包含日期标记的结果集,并将其与您的表外部连接:
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)
关于MYSQL:在查询中获取具有默认值的两列和第三个普通列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54507052/