MYSQL:在查询中获取具有默认值的两列和第三个普通列

标签 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_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/

相关文章:

java - 比较java和mysql日期时间之间的秒差

MySQL 设置自动增量 "Ad Hoc"

mysql - SQL 递归引用完整性

php 将计划任务以分钟为单位添加到当前时间为 12 :10 - 12:19

mysql - 两个 MySQL 表的复杂连接

php - 如何在不使用限制超过 1 的 MySql 查询循环的情况下获取最后一行的值

mysql - 适用于大量记录的数据库架构(例如社交网络中的消息)

MySQL:获取每个商店最新价格的产品

php - Mysql IN查询代替多个AND条件

PHP 多个同时选择?