Mysql
 sql >> база данни >  >> RDS >> Mysql

MySQL Max функция за смесване на редове

Нуждаете се от GROUP BY клауза с агрегата MAX() . MySQL ви позволява да го пропуснете (където други RDBMS биха докладвали за грешки), но с неопределени резултати, които виждате. Това може да се справи чрез присъединяване към подзаявка, която връща групирания rev за 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

Горното ще върне максималния rev стойност за произволен id . Ако сте сигурни имате нужда само от единия ред, филтриран от WHERE клауза, а не MAX() на група, вижте другия отговор, който използва ORDER BY &LIMIT .



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Как да създадете MySQL заявка, за да намерите свързани публикации от множество таблици?

  2. Как да изчислим часовата разлика с графика, работещ ч/б две времеви печати?

  3. PyMySQL връща стари/моментни стойности/не изпълнява повторно заявка?

  4. Как да създадете XML файл от MySQL Data заявки?

  5. Колко дълго mysql_connect остава отворен?