2016-04-01 34 views
0

我正在嘗試返回兩個單獨的DATETIME列中具有最高日期的表中的記錄。如何選擇在兩個日期時間列中找到的具有最高日期的記錄?

例如:

-------------------------------------------------------------- 
| ID |  DATE1  |  DATE2   | OTHERDATA | 
-------------------------------------------------------------- 
| 1 |2016-02-16 17:14:10| NULL     |  3  | 
-------------------------------------------------------------- 
| 2 |2016-02-29 10:14:51| 2016-03-03 12:43:39 |  3  | 
-------------------------------------------------------------- 
| 3 |2016-03-03 12:43:39| 2016-03-10 01:00:00 |  3  | 
-------------------------------------------------------------- 

MySQL查詢我得遠:

SELECT *, GREATEST(COALESCE(DATE1,0), 
    COALESCE(DATE2,0)) 
FROM Table 
WHERE OTHERDATA = 3 
GROUP BY OTHERDATA; 

我期待此查詢到回報ID 3而是它返回ID 1。我假設它與NULL有關,但我認爲COALESCE會處理這個問題?有任何想法嗎?

+0

刪除GROUP BY子句。這裏沒有聚合功能 – Strawberry

回答

0
SELECT * 
    FROM table 
WHERE otherdata = 3 
ORDER 
    BY GREATEST(COALESCE(DATE1,0), 
COALESCE(DATE2,0)) DESC 
LIMIT 1 
+0

雖然看起來很明顯,但爲什麼這種方式可能會使這個更好的答案提供一些簡短的提示 – planetmaker

+0

工程就像一個魅力!謝謝! – husseinSD

相關問題