使用表1中的所有元组连接表,但只有表2中的1个匹配元组

时间:2013-12-07 16:23:14

标签: mysql sql join left-join outer-join

我想在MySQL中加入两个表。第一个是目录项表 - 每个项目都有一个item_id字段。我还有一个与项目关联的图像表(item_id,image_id,content)。

如何加入这两个表,以便我有一个包含所有项目的列表,还包括该项目的images表中的一个元组?

我希望能够生成所有项目的列表,其中包含一个与之关联的图像。

我试过了:

SELECT  * From items i
JOIN    images im
ON      im.image_id = 
    (
    SELECT  im.image_id
    FROM    images ci
    WHERE   ci.item_id = i.item_id
    ORDER BY
            ci.item_id
    LIMIT 1
    )

但是这仍然只给我一些与其相关联的图像...我需要所有项目,无论是否有图像(左外连接?)。

感谢!!!!

1 个答案:

答案 0 :(得分:0)

您需要left联接才能获得其他表中不存在匹配项的结果

SELECT i.*, min(im.image_id)
From items i
LEFT OUTER JOIN images im ON im.image_id = i.item_id
GROUP by i.item_id

请参阅this great explanation of joins