Mysql
 sql >> Datenbank >  >> RDS >> Mysql

MySQL Max-Funktion zum Mischen von Zeilen

Sie benötigen ein GROUP BY -Klausel mit dem Aggregat MAX() . MySQL erlaubt es Ihnen, es wegzulassen (wo andere RDBMS Fehler melden würden), aber mit unbestimmten Ergebnissen, die Sie sehen. Dies kann durch Verbinden mit einer Unterabfrage gehandhabt werden, die den gruppierten rev zurückgibt pro 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

http://sqlfiddle.com/#!2/4f651/8

Das obige gibt die maximale rev zurück Wert für jede id . Wenn Sie sicher sind Sie brauchen nur die eine Zeile, die durch WHERE gefiltert wird -Klausel anstelle von MAX() Sehen Sie sich pro Gruppe die andere Antwort an, die ORDER BY verwendet &LIMIT .