MySQL如何提取某一字段下,对应不同分类的5条记录?

MySQL新手,遇到一个问题,手上有一张表,需要提取“产品”字段下所有分类的前5条记录。我开始使用GROUP BY 的方式提取,是获取到了每个产品的1条记录,现在的需求是如何获取对应每个产品的5条?逻辑思路上有些理不清。

提取单条记录语句如下:

SELECT * FROM 表名 GROUP BY 产品

尝试用单条件提取可以实现,使用语句为

(SELECT * FROM 表名 WHERE 产品= "A" limit 5)
UNION
(SELECT * FROM 表名 WHERE 产品= "B" limit 5)
UNION
(SELECT * FROM 表名 WHERE 产品= "C" limit 5)

但是我的产品分类很多,这样union下去不是个事,求教如何通过语句直接写出查询每类产品5条记录??看过CSDN里很多类似的,但情境似乎不太一样。

请各位指教,万分感谢

分组排序,给每组下的纪录都排一个编号,然后取前五的就行了

建议使用存储过程:获得分类,然后根据分类查找5条。

https://blog.csdn.net/qq_16504067/article/details/53216422

试一下这个 select top 5 列名 from 表名 group by 产品

https://www.csdn.net/gather_28/MtTaIg1sOTczNi1ibG9n.html

SELECT
*
FROM
tbl_user AS a
WHERE
(SELECT
COUNT(*)
FROM
tbl_user AS b
WHERE
b.username = a.username AND b.user_id >= a.user_id) <= 5
ORDER BY a.username ASC

SELECT
*
FROM
表名 a
WHERE
(
SELECT
count(*)
FROM
表名
WHERE
主键 >= a.主键 and 产品 = a.产品

) < 6 and a.产品 in("A", "B")

ORDER BY
a.产品

真烧脑~ 就当学习了。


SELECT
    *
FROM
    (
        SELECT
            *, num = ROW_NUMBER () OVER (
                partition by 产品ID order by 表主键 desc 
            )
        FROM
            表
    ) T
WHERE
    num <=5

不过这个是sqlserver的,不知道mysql是不是有相同的关键字
具体的思路是:用产品ID分组并且加序号,让序号小于6的显示