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

'имя_файла \t \t LNAME электронной \t \t Оптина Дата a.fname \t \t b.lname аб @ электронной почты \t \t у 01/08/2015 a.fname \t \t b.lname аб @ электронной почты \t \t п 04/06/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 

или заказ по дате (по убыванию) и принимать только самый верхний, как @ Paul-Spiegel говорит

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'. –