如何根据列选择有限的行

时间:2017-12-01 08:32:45

标签: mysql sql

我是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行。

2 个答案:

答案 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的成员