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.