sql >> Database >  >> RDS >> Mysql

MySQL Max-functie rijen mengen

Je hebt een GROUP BY . nodig clausule met het aggregaat MAX() . MySQL staat je toe om het weg te laten (waar andere RDBMS fouten zouden rapporteren), maar met onbepaalde resultaten, die je ziet. Dit kan worden afgehandeld door deel te nemen aan een subquery die de gegroepeerde rev . retourneert per 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

Het bovenstaande retourneert de max rev waarde voor elke id . Als je zeker bent je hebt alleen die ene rij nodig zoals gefilterd door de WHERE clausule in plaats van de MAX() kijk per groep naar het andere antwoord dat gebruik maakt van ORDER BY &LIMIT .



  1. Gelijktijdige MySQL-updates

  2. Hoe opmerkingen van een kolom te tonen met desc-bewerking

  3. ssh eerst met mysqldb in python

  4. Oracle-verklaring