带左连接的sql最小值

时间:2013-10-24 18:44:16

标签: mysql sql left-join greatest-n-per-group

我有两个表,Article和Image with one-many其中Article是父级,Image是外键列article_id。每张图片还有positioninteger

现在我需要的是我得到所有的文章,无论是否有任何图像,但对于那些有一个或多个图像的人,它需要返回一个存储在最低位置的单个图像position列。

换句话说,沿伪线:

SELECT FROM ALL ARTICLES LEFT JOIN IMAGES (WHERE IMAGE FOR THIS ARTICLE HAS SMALLEST POSITION)

获取上述内容的SQL查询是什么?

2 个答案:

答案 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