将mysql查询抱怨为单一查询

  • 本文关键字:查询 单一 mysql mysql
  • 更新时间 :
  • 英文 :


我有3个查询

SELECT * FROM `admin_sprints` 
where CURDATE() < `sprint_start_date` and 
      CURDATE() <`sprint_end_date` - retuen type  as future
SELECT * FROM `admin_sprints` 
where CURDATE() > `sprint_start_date` and 
      CURDATE() >`sprint_end_date` - retuen type  as past
SELECT * FROM `admin_sprints` 
where CURDATE() between `sprint_start_date` and 
     `sprint_end_date` - retuen type  as current

我试图将其合并为单个查询

所以我尝试了

SELECT 
    *
FROM
    admin_sprints
ORDER BY (CASE
    WHEN sprint_start_date` and CURDATE() <`sprint_end_date`  THEN future
    ELSE admin_sprints` where CURDATE() > `sprint_start_date` and CURDATE() >`sprint_end_date then over
  ELSE current
END); 
admin_sprints
---------------|------------|-----------------|-----------------------
sprint_id      |sprint_name  |sprint_start_date|     sprint_end_date  |
1                Sprint1        2018-11-01          2018-11-13
2                sprint2          2018-11-14         2018-11-23
3                sprint 3        2018-11-24          2018-11-130

预期输出

sprint_id   sprint_name       type
    1        Sprint1            over
    2        Sprint2            Active
    3         Sprint3           future

我不知道这个方法是否正确。运气不好,它不起作用。如有任何帮助,将不胜感激

您需要在SELECT子句中使用CASE..WHEN语句,以相应地确定type。尝试:

SELECT 
    *,
    CASE WHEN sprint_start_date < CURDATE() AND 
              sprint_end_date < CURDATE() 
           THEN 'over'
         WHEN CURDATE() BETWEEN sprint_start_date AND 
                                sprint_end_date 
           THEN 'active'
         ELSE 'future'
    END AS type
FROM
    admin_sprints

相关内容

最新更新