2016-09-19 111 views
1

我想獲取最新記錄。它工作正常,如果我不包括「CustFile.optin」,但一旦我添加此字段,它給我所有的記錄。你能幫忙嗎?如何根據最新日期選擇記錄

SELECT BEST.fname, BEST.lname, BEST.email, MAX(CustFile.status_date), CustFile.optin 
FROM BEST, CustFile 
WHERE BEST.email = CustFile.email 
GROUP BY BEST.fname, BEST.lname, BEST.email, CustFile.optin 

答:

fname lname  email optin date 
a.fname a.lname [email protected] y 01/08/2015 
b.fname b.lname [email protected] n 16/06/2016 
+0

你可以添加一些'樣本數據set'和'預期的結果set'? – Shaharyar

+0

'FNAME LNAME \t電子郵件\t \t選擇啓用\t日期 a.fname \t b.lname \t AB @電子郵件\tŸ\t 2015年1月8日 a.fname \t b.lname \t AB @電子郵件\tñ\t 04// 2016' – Drake

+0

我只想要最新的記錄,但目前它將全部返回 – Drake

回答

0

爲什麼不能簡單地採取行WHERE MAX(CustFile.status_date) = CustFile.status_date

SELECT * 
FROM BEST, CustFile 
WHERE 
    BEST.email = CustFile.email AND 
    MAX(CustFile.status_date) = CustFile.status_date 

或ORDER BY日期(遞減),並採取只有最頂層的是@保羅 - 施皮格爾說

SELECT * 
FROM BEST, CustFile 
WHERE BEST.email = CustFile.email 
ORDER BY status_date DESC 
LIMIT 1 
+1

如果這是OP想要的,那麼一個簡單的'ORDER BY status_date DESC LIMIT 1'也可以工作。 –