mySQL 仅返回 1 个结果的情况

mySQL case when only returning 1 result

不知道为什么只返回第一个结果。日期是日期格式而不是日期时间。我只是从使用 ORACLE 开始使用 MySQL,这让我很头疼。

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

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

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

注意:我编辑了查询,它的性能比上次查询更好