2016-11-16 170 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

我的榮幸。 :) –