首页 > 解决方案 > 我正在尝试从 2 个表中访问数据库中的项目,但每个组最多只能获得 3 个

问题描述

我正在使用 2 个表进行 mysql 查询,并且我试图每组最多只能获得 3 行。

例如,如果表 1 是部门,表 2 是类别。假设一个部门是服装,另一个部门是珠宝。如果名为 Clothing 的部门有 5 个类别(鞋子、牛仔裤、内衣、袜子、运动衫),而部门珠宝有 4 个类别(戒指、项链、手镯、耳环),我该如何为每个部门返回最多 3 个类别。

我希望输出返回

Department   Category
______________________________________
Clothing     Shoes
Clothing     Jeans
Clothing     Underware
Jewellery      Rings
Jewellery      Necklaces
Jewellery      Bracelets

我只想为每个部门返回最多 3 个类别。

这是我正在尝试做的一个示例,但数据库中有更多的部门和类别。我将按类别和部门进行排序。此查询用于向用户显示一小段信息,因此稍后我将不得不访问所有部门和类别。我已经可以用 mysql 做到这一点,但我不知道如何只获得 3 个类别 MAX

标签: mysqlmaxgrouping

解决方案


一种可能性是使用带有 a和 use的简单SELECT语句将数据连接在一起。例如:LIMITUNION

Departments Table:

+----+--------------+
| id | name         |
+----+--------------+
|  1 | jewelry      |
|  2 | clothing     |
+----+--------------+

MySQL:

(SELECT * from categories WHERE department_id=1 LIMIT 3)
UNION
(SELECT * from categories WHERE department_id=2 LIMIT 3)

但是,如果您有很多不同的部门,您将需要一种更强大的方法。在这种情况下,此答案将对您有所帮助:https ://stackoverflow.com/a/10516530/11182541


推荐阅读