【发布时间】:2021-01-26 03:47:49
【问题描述】:
我有以下表格:
-
product_category(联合表) product_category_id (PK AI) product_id category_id
-
类别 category_id (PK AI) 标题 ...等
-
产品 product_id (PK AI) 标题 命令 等等……
我想通过联合表 (product_category) 获取所有类别及其相关产品,并将其产品限制为每个类别 5 个,基本上是多对多关系,如 netflix 类别轮播(戏剧类别有 5 个相关电影和恐怖类别有 5 部相关的电影等...)我已经尝试过了,但加入没有按预期工作:
SELECT
*
FROM
product_category AS pc
INNER JOIN
categories AS cat ON cat.category_id = pc.category_id
INNER JOIN
(SELECT
*
FROM
products
LIMIT 1 ORDER BY products.order DESC) AS x ON x.product_id = pc.product_id;
所以... ¿如何限制每个类别的产品?我正在使用 MySQL 5.7 我不想多次查询数据库以按类别手动获取产品,我想以最干净的方式完成这项工作,最多只查询一两个。 ¿ 有可能吗?
问候。
【问题讨论】:
-
您能否在当前限制子查询中添加
ORDER BY子句,以便我们知道要保留哪条记录的逻辑是什么? -
@TimBiegeleisen 我已经在 subQuery 中尝试过“ORDER BY products.product_id”,但它似乎不起作用。还有 GROUP BY。我想按 product_id 保存记录。谢谢。
-
这不能回答我的问题。
-
我进行了更改。你能看到最后的编辑吗?请问,你的问题能更“清楚”吗?
标签: mysql many-to-many relationship