Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Hàm MySQL Max trộn các hàng

Bạn cần một GROUP BY mệnh đề với MAX() tổng hợp . MySQL cho phép bạn bỏ qua nó (trong đó các RDBMS khác sẽ báo lỗi) nhưng với kết quả không xác định mà bạn đang thấy. Điều này có thể được xử lý bằng cách kết hợp với một truy vấn con trả về rev được nhóm lại 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

Ở trên sẽ trả về rev tối đa giá trị cho bất kỳ id nào . Nếu bạn chắc chắn bạn chỉ cần một hàng như được lọc bởi WHERE thay vì mệnh đề MAX() mỗi nhóm, hãy xem câu trả lời khác sử dụng 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. Chỉ mục datetime Mysql không hoạt động khi sử dụng 'like'

  2. Doctrine2 với Symfony2 không nhận dạng ký tự db và đối chiếu

  3. Không thể khởi động máy chủ mysql trong ubuntu

  4. Cách định dạng thời gian thành '2:34 giờ', '0:34 giờ', v.v. trong MySQL

  5. MySQL bị hỏng sau mỗi lần khởi động lại máy chủ