Mysql 如何选择每个类别的有限数据

Mysql 如何选择每个类别的有限数据,mysql,sql,join,Mysql,Sql,Join,我有一个名为Category的表,如 Id Name 1 A 2 B 我有产品表,比如 Id Name Category_id 1 C 1 2 D 1 3 E 1 4 F 2 5 G 2 6 H 2 Product.id Pname Cname 1 C A 2 D A

我有一个名为Category的表,如

Id    Name
1     A
2     B
我有产品表,比如

Id   Name    Category_id
1    C       1
2    D       1
3    E       1
4    F       2
5    G       2
6    H       2
Product.id    Pname    Cname
1             C        A
2             D        A
3             E        A
4             F        B
我想从每个类别中选择2个项目。我正在应用这个查询

Select Product.id,Product.name as pname,category.name as cname from product join category where Category_id=Category.id limit 0,4
但它返回产品表的前四个数据,如

Id   Name    Category_id
1    C       1
2    D       1
3    E       1
4    F       2
5    G       2
6    H       2
Product.id    Pname    Cname
1             C        A
2             D        A
3             E        A
4             F        B
但我想从每个类别中得到2种产品

Product.id    Pname    Cname
1             C        A
2             D        A
4             F        B
5             G        B

如果您运行的是MySQL 8.0,则可以使用行号:


似乎与PHP没有任何关系。我编辑了你的标签。如果您使用与您的特定问题更密切相关的准确标记,而不是您在应用程序中其他地方使用但与此问题无关的技术,那么具有相关技能的人更有可能看到您的问题并能够提供帮助。我们可以不使用子查询来实现这一点吗