2016-11-16 94 views
0

不知道为什么这只是返回第一个结果。日期是日期格式而不是日期时间。我只使用MySQL使用ORACLE开始,这是做我的头。mySQL case只返回1结果

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 
+0

结束,dateid ...缺少一个逗号 – SoulRayder

+0

提供的样本数据,你所得到的结果和预期的结果。 – Viki888

+0

嗨SoulRayder,因为dateID是case语句的别名,所以不需要逗号。 – mikepop

回答

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 

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

+0

嗨,穆罕默德,谢谢你这么多伙伴!你是传奇!我用了一套,并没有像DEFINE那样使用它。我真的很欣赏它 – mikepop

+0

我的荣幸。 :) –