2010-05-06 3 views
1

J'ai la table de base de données journaux comme suit:Interrogation dernier groupe par entrées DeviceId

alt text http://www.freeimagehosting.net/uploads/16e974703a.jpg

Je voudrais extraire la dernière entrée du dispositif, pollDate, état. Par exemple.

deviceId, pollDate, l'état

1, 2010-95-06 10:53:28, 1

3, 2010-95-06 10:26:28, 1


J'ai essayé d'exécuter la requête suivante mais distincte sélectionne uniquement les premiers enregistrements, pas la dernière

SELECT DISTINCT deviceId, pollDate, status 
FROM logs 
GROUP By deviceId 
ORDER BY pollDate DESC 

Alors, pourriez-vous s'il vous plaît m'aider à extraire les dernières entrées de la table? Merci.

Répondre

1

Si (deviceID, poll_date) est unique, vous pouvez effectuer les opérations suivantes:

SELECT * 
FROM (
     SELECT deviceid, MAX(poll_date) AS md 
     FROM logs 
     GROUP BY 
       deviceid 
     ) q 
JOIN logs l 
ON  l.deviceid = q.deviceid 
     AND l.poll_date = q.md