只返回1个结果时的mySQL情况

时间:2016-11-16 06:12:46

标签: mysql case-when

不知道为什么这只会返回第一个结果。日期是日期格式而不是日期时间。我只是开始使用MySQL来使用ORACLE,而这正是我的目标。

SELECT *,

   CASE d_date

     WHEN max(d_date) THEN 'Today'

     WHEN date_add(max(d_date), interval -1 day) THEN 'Yesterday'

     ELSE 'other'

  END dateID

FROM mike.Tble

1 个答案:

答案 0 :(得分:0)

当像MAX这样的聚合函数使用它时返回具有最大值的单个记录。因此,我的理解需要一个子查询。我找不到如何针对大型记录优化此查询,但我有以下内容并允许对大型记录进行优化。

set @today = (SELECT max(d_date) FROM mike.Tble);
set @yesterday = (SELECT date_add(max(d_date), interval -1 day) FROM mike.Tble);

SELECT *, CASE d_date

     WHEN @today THEN 'Today'

     WHEN @yesterday THEN 'Yesterday'

     ELSE 'other'

  END AS dateID

FROM mike.Tble

注意:我编辑了查询,其性能优于上次查询