Du skal bruge en GROUP BY klausul med den samlede MAX() . MySQL tillader dig at udelade det (hvor andre RDBMS ville rapportere fejl), men med ubestemte resultater, som du ser. Dette kan håndteres ved at joine en underforespørgsel, som returnerer den grupperede rev efter id .
SELECT
r.id,
r.state,
maxrev.rev
FROM
VIEW_data r
/* INNER JOIN against subquery which returns MAX(rev) per id only */
JOIN (
SELECT id, MAX(rev) AS rev
FROM VIEW_data GROUP BY id
/* JOIN is on both id and rev to pull the correct value for state */
) maxrev ON r.id = maxrev.id AND r.rev = maxrev.rev
WHERE r.id = 1
https://sqlfiddle.com/#!2/4f651/8
Ovenstående vil returnere maks. rev værdi for enhver id . Hvis du er sikker du behøver kun den ene række som filtreret af WHERE klausul i stedet for MAX() pr. gruppe, se på det andet svar, som gør brug af ORDER BY &LIMIT .