我有两个表,Article和Image with one-many其中Article是父级,Image是外键列article_id
。每张图片还有position
列integer
。
现在我需要的是我得到所有的文章,无论是否有任何图像,但对于那些有一个或多个图像的人,它需要返回一个存储在最低位置的单个图像position
列。
换句话说,沿伪线:
SELECT FROM ALL ARTICLES LEFT JOIN IMAGES (WHERE IMAGE FOR THIS ARTICLE HAS SMALLEST POSITION)
获取上述内容的SQL查询是什么?
答案 0 :(得分:0)
在不了解您的架构的情况下,无法给出准确的答案,但实质上您希望得到groupwise minimum:
SELECT *
FROM Article LEFT JOIN (
Images NATURAL JOIN (
SELECT article_id, MIN(position) AS position
FROM Images
GROUP BY article_id
) AS t
) USING (article_id)
答案 1 :(得分:0)
SELECT * FROM ARTICLES AS art
LEFT JOIN
(SELECT article_id, image_id,
MIN(Position) AS Position
FROM Images
GROUP BY article_id, image_id) AS MinPos
LEFT JOIN Images AS img ON
MinPos.article_id = img.article_id AND
MinPos.image_id = img.image_id