2016-09-19 109 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'也可以工作。 –