我是MySQL的新手。这可能很容易,但不符合我的逻辑
我有product_table
,其中有5列
id
product_name
product_image
description
category_id
此表中的 category_id
包含多个具有相同ID的行
例如
category
字段有300行category_id
'4'和100行category_id
'3'等......
我想每category_id
只选择5行
例如
category_id
4行5行,category_id
3行5行。
答案 0 :(得分:1)
SELECT * FROM product_table WHERE category_id = '1' LIMIT 5
UNION
SELECT * FROM product_table WHERE category_id = '2' LIMIT 5
UNION
SELECT * FROM product_table WHERE category_id = '3' LIMIT 5
.
.
.
如果只有几个类别,那么这应该没问题。
答案 1 :(得分:0)
select *
from
(SELECT category_id,
id,
CASE WHEN @gr=category_id THEN @rn:=@rn+1 ELSE @rn:=0 END as row_number,
@gr:=category_id
FROM the_table, (select @rn:=0, @gr:=null) as sess
order by category_id, id) sub
WHERE sub.row_number<5
您可以引入会话变量并在每个组中订购数据计数成员。然后只留下组号小于5的成员