Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Baris pencampuran fungsi MySQL Max

Anda memerlukan GROUP BY klausa dengan agregat MAX() . MySQL mengizinkan Anda untuk menghilangkannya (di mana RDBMS lain akan melaporkan kesalahan) tetapi dengan hasil yang tidak pasti, yang Anda lihat. Ini dapat ditangani dengan bergabung dengan subquery yang mengembalikan rev . yang dikelompokkan 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

Di atas akan mengembalikan rev maks nilai untuk id . Jika Anda pasti Anda hanya perlu satu baris yang difilter oleh WHERE klausa daripada MAX() per grup, lihat jawaban lain yang menggunakan 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. Mengapa tidak menonaktifkan ONLY_FULL_GROUP_BY

  2. Mysql Gabung Dua tabel pada kunci

  3. Mengonversi baris dengan terlalu banyak nilai menjadi kolom

  4. Cara Menggunakan Tampilan di Database MySQL

  5. MySQL:Dapatkan hasil pengembalian dari INSERT SELECT