【问题标题】:Join tables with all tuples from table 1, but only 1 matching tuple from table 2使用表 1 中的所有元组连接表,但只有表 2 中的 1 个匹配元组
【发布时间】:2013-12-24 23:15:21
【问题描述】:

我有两个要加入 MySQL 的表。第一个是目录项目表 - 每个项目都有一个 item_id 字段。我还有一个与项目(item_id、image_id、内容)相关联的图像表。

如何连接这两个表,以便我拥有所有项目的列表,但还包括该项目的图像表中的一个元组?

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

我试过了:

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
    )

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

谢谢!!!!

【问题讨论】:

  • 你是对的,使用左连接。你试过了吗?有什么问题吗?

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


【解决方案1】:

您需要一个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

【讨论】:

    猜你喜欢
    • 2015-07-18
    • 1970-01-01
    • 1970-01-01
    • 2013-02-22
    • 2017-09-05
    • 1970-01-01
    • 2011-08-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多