我有一个以user_id,item_id和interaction_type为列的表。 interaction_type可以是0,1,2,3,4或5.但是,对于某些user_id和item_id对,我们可能有多个interaction_types。例如,我们可能有:
user_id item_id interaction_type
2 3 1
2 3 0
2 3 5
4 1 0
5 4 4
5 4 2
我想要的是只有多倍才能保持最大的interaction_type。所以我想要这个:
user_id item_id interaction_type
2 3 5
4 1 0
5 4 4
以下是我为此目的编写的查询:
select user_id, item_id, max(interaction_type) as max_type
from mytable
group by user_id, item_id;
但结果很奇怪。例如,在原始表中,我有100000行,interaction_type = 5,但在结果表中我只有2000.这怎么可能,因为max将在包含5的每个比较之间选择5,因此我不应该少于5在结果表中。
答案 0 :(得分:1)
您的查询没问题。获得2000行的原因是因为每一对唯一值<input #name name="name" [(ngModel)]="firstName" (change)="onNameChange(name.value)">
,user_id
得到一行。
如果要查看每行中的交互类型,请使用:
item_id
我想要你想要所有具有最大交互类型的行。如果是,请计算最大值,然后查找与该值匹配的所有行:
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;
此查询不需要select t.*
from mytable t cross join
(select max(interaction_type) as maxit from mytable) x
on x.maxit = t.interaction_type;
。