2016-09-19 15 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 

回答:単に行WHERE MAX(CustFile.status_date) = CustFile.status_dateを取らないのはなぜ

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 \t LNAME \tメール\tのoptin \t日 a.fname \t b.lname \t ABメール\t Y @ \t 2015年1月8日 a.fname \t b.lname \t ABメール@ \t N \t 4月6日/ 2016年12月12日 – Drake

+0

私は最新のレコードだけを希望しますが、現時点ではすべてを返します – Drake

答えて

0

SELECT * 
FROM BEST, CustFile 
WHERE 
    BEST.email = CustFile.email AND 
    MAX(CustFile.status_date) = CustFile.status_date 
日(降順)による

又は注文とほとんど唯一のトップを取るポール・シュピーゲルは

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

これがOPが望むものであれば、単純な 'status_date DESC LIMIT 1 '命令も機能します。 –

関連する問題