我有包含以下列的 Customer_Record 表
customer_id | item_id | item_count
1 2 10
1 3 9
1 4 2
1 5 2
2 2 5
2 4 1
2 8 2
4 1 2
4 5 3
4 8 7
现在我想根据 item_count 获取每个客户的前 2 件商品 (items_id)。 请帮我解决这个问题。
结果如下:-
customer_id | item_id | item_count
1 2 10
1 3 9
2 2 5
2 4 1
4 1 2
最佳答案
对于 mysql,您可以使用排名查询来获取每组的最高结果
SELECT t.customer_id,
t.item_id,
t.item_count
FROM (
SELECT t.*,
@rank:= CASE WHEN @group = t.customer_id THEN @rank +1 ELSE 1 END rank ,
@group:= t.customer_id
FROM
t
JOIN (SELECT @group:='',@rank:='') t1
ORDER BY t.customer_id ,item_count DESC
) t WHERE t.rank <=2
Fiddle Demo
关于mysql - 根据组从表中获取前 N 行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25347513/