2013-03-20 2 views
0

Мне нужно получить с базы последнюю запись, где code = variable и complete = 0.mysql WHERE и LAST

Я использую этот SQL:

SELECT email, date FROM users_recovery WHERE restore_key = '" . $code . "' AND complete = '0' 

Например DB:

email - code - complete - date 
[email protected] - code1 - 0 - 1111111 
[email protected] - code2 - 0 - 2222222 

Если переменная $code будет одним из значений в БД, то запрос будет прекрасно работать, но мне также нужно проверить это последняя запись с этим email или нет, но я не понимаю, как это сделать.

ответ

0

Попробуйте это ...

SELECT b.email, b.date, b.complete, b.code 
FROM (SELECT email, 
       Max(date) AS date 
     FROM users_recovery 
     GROUP BY email 
     WHERE code = variable 
       AND complete = 0) a 
     JOIN users_recovery b 
     ON b.email = a.email 
      AND b.date = a.date 
0

Использование ORDER BY с LIMIT, чтобы ограничить результаты последней записи (эи ORDER BY наиболее позднюю дату):

SELECT 
    email, 
    date 
FROM 
    users_recovery 
WHERE 
    restore_key = '" . $code . "' 
AND complete = '0' 
ORDER BY 
    date DESC 
LIMIT 1 
+0

Это не сработает, потому что restore_key уникальное значение, но мне нужно проверить последнюю запись по электронной почте. – user2058653

0

Использование INNER JOIN с MAX ()

SELECT 
    email, 
    date 
FROM users_recovery AS ur 
    INNER JOIN (SELECT 
     MAX(DAte) AS date 
      FROM users_recovery) AS url 
    ON url.date = ur.date 
WHERE restore_key = '" . $code . "' 
    AND complete = '0'