Ihre Anfrage ist in Ordnung. Der Grund, warum Sie 2000 Zeilen erhalten, ist, dass Sie eine Zeile für jedes eindeutige Wertepaar user_id
erhalten , item_id
.
Wenn Sie die Interaktionstypen in jeder Zeile sehen möchten, verwenden Sie:
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;
Mir fällt auf, dass Sie alle Zeilen mit dem maximalen Interaktionstyp haben möchten. Berechnen Sie in diesem Fall das Maximum und finden Sie dann alle Zeilen, die diesem Wert entsprechen:
select t.*
from mytable t cross join
(select max(interaction_type) as maxit from mytable) x
on x.maxit = t.interaction_type;
Kein group by
wird für diese Abfrage benötigt.