Volgens mij krijg je dan als resultaat:
id = 2, (DUS NIET 3!)
status = 'doorbroken',
did = 100
En dit klopt. Wat de query namelijk eerst doet is het WHERE statement uitvoeren. Op basis van de dan geselecteerde records wordt je aggregate functie (max) uitgevoerd. Daarvan is de uitkomst 2.
Dit is denk ik dus niet wat je wilt, maar wat je wel wilt is me niet helemaal duidelijk.
- SanThe - op 15/04/2013 16:08:02
Beetje vreemd dit: ORDER BY MAX(id) DESC
Daar staat dus eigenlijk ORDER BY 3 DESC
Nee, dat staat er niet. MAX(id) in dit geval is de naam van de kolom. Omdat de TS er ook een alias aan geeft kan hij echter ook gewoon 'ORDER BY id DESC' gebruiken.
SELECT a.id, a.did, a.status
FROM mutaties a
INNER JOIN (
SELECT did, max(id) AS id
FROM mutaties
GROUP BY did
) b ON (
a.did = b.did
AND a.id = b.id
)
WHERE a.status LIKE 'doorbroken%'
ORDER BY a.id DESC;