我对复杂的查询很困难。有一个类别和产品表。我需要展示每个类别的4个产品。我怎么能这样做?
我的结构:Category.id,Category.name和Product.id,Product.category_id。
SQL:
SELECT Product.id, Product.name, Product.img, Category.name FROM categories AS Category
INNER JOIN (SELECT Product.id, Product.name, Product.img, Product.category_id FROM products AS Product) AS Product ON
Product.category_id = Category.id;
我在哪里设定产品限制?
感谢。
Felipe Marques
答案 0 :(得分:0)
这在MySQL中很痛苦(在我看来)。这是一个带有相关子查询的版本:
SELECT p.id, p.name, p.img, c.name
FROM categories c INNER JOIN
(SELECT p.id, p.name, p.img, p.category_id,
(select count(*) from products p2 where p2.category_id = p.category_id and p2.id <= p.id
) as seqnum
FROM products p
) p
ON Product.category_id = Category.id
where seqnum <= 4
这使用相关子查询来计算产品ID小于或等于给定产品的产品数量。这将创建一个序列号,您可以在其中选择前四个。