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

Nhóm Mysql theo hai cột và chọn giá trị lớn nhất của cột thứ ba

Truy vấn của bạn là tốt. Lý do bạn nhận được 2000 hàng là vì bạn nhận được một hàng cho mỗi cặp giá trị duy nhất user_id , item_id .

Nếu bạn muốn xem các loại tương tác đi vào từng hàng, hãy sử dụng:

select user_id, item_id, max(interaction_type) as max_type,
       group_concat(distinct interaction_type) as interaction_types,
       count(*) as cnt
from mytable
group by user_id, item_id;

Tôi xảy ra với tôi rằng bạn muốn tất cả các hàng có loại tương tác tối đa. Nếu vậy, hãy tính giá trị tối đa và sau đó tìm tất cả các hàng phù hợp với giá trị đó:

select t.*
from mytable t cross join
     (select max(interaction_type) as maxit from mytable) x
     on x.maxit = t.interaction_type;

Không có nhóm group by là cần thiết cho truy vấn này.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Cách nâng cấp từ mật khẩu cũ MySQL lên hệ thống mật khẩu mới

  2. Thủ tục lưu trữ thay thế MySQL

  3. Phương thức xác thực 'mysql_old_password' không được hỗ trợ

  4. Cách cài đặt phpMyAdmin trên các tài khoản lưu trữ được quản lý

  5. mysqldump với tạo dòng cơ sở dữ liệu