sql >> Base de Datos >  >> RDS >> Mysql

Grupo Mysql por dos columnas y elija el valor máximo de la tercera columna

Está bien tu consulta. La razón por la que obtiene 2000 filas es porque obtiene una fila por cada par único de valores user_id , item_id .

Si desea ver los tipos de interacción que van en cada fila, utilice:

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;

Se me ocurre que quieres todas las filas con el tipo de interacción máximo. Si es así, calcule el máximo y luego busque todas las filas que coincidan con ese valor:

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

Sin group by es necesario para esta consulta.