sql >> Databáze >  >> RDS >> Mysql

Funkce MySQL Max míchání řádků

Potřebujete GROUP BY klauzule s agregací MAX() . MySQL vám umožňuje to vynechat (kde by jiné RDBMS hlásily chyby), ale s neurčitými výsledky, které vidíte. To lze vyřešit spojením proti dílčímu dotazu, který vrací seskupený rev za 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

Výše uvedené vrátí maximální rev hodnotu pro jakékoli id . Pokud jste si jisté potřebujete pouze jeden řádek filtrovaný pomocí WHERE klauzule spíše než MAX() za skupinu, podívejte se na druhou odpověď, která využívá ORDER BY &LIMIT .



  1. MYSQL - Odstranit dotaz pomocí funkce Join

  2. $PATH se neukládá poté, co opustím terminál

  3. Eliminujte dílčí dotaz na průměrnou číselnou hodnotu

  4. jqGrid – Jedinečné ID pro nový řádek