我有两张桌子,产品和product_images。 Product_images包含每个产品的图像条目。每种产品都有很多图像。
我正在使用以下SQL查询,但是我想每个产品只显示一个图像。现在,每个产品的条目数量与图像数量相同。
为此,我将展示很多产品,例如所有类别的产品,而不是单一产品。
select products.product_id, product_images.image,
products.name, products.description
from product_images
left join products on products.product_id = product_images.product_id
where products.category_child= 1
如何只为每个产品展示一张图片(第一张)?
答案 0 :(得分:0)
如果您使用按字典顺序排列的最小图像名称,那么此查询将起作用:
select products.product_id, MIN(product_images.image), products.name, products.description
from product_images
left join
products
on products.product_id = product_images.product_id
where products.category_child= 1
group by products.product_id
此外,您可能希望在此使用INNER JOIN
而不是LEFT JOIN
,因为LEFT JOIN
也会返回属于非产品的图片,如果您出于某种原因有这样的话。