mysql - 将表与表 1 中的所有元组连接起来,但仅连接表 2 中的 1 个匹配元组

标签 mysql sql join left-join outer-join

我想在 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
    )

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

谢谢!!!

最佳答案

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

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

关于mysql - 将表与表 1 中的所有元组连接起来,但仅连接表 2 中的 1 个匹配元组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20443630/

相关文章:

php - Mysql选择最后添加的5个并使它们成为rand

php - 使用MySql数据库用php登录

c# - 使用参数从 DbCommand 获取 SQL 查询字符串

mysql - SQL连接五个表

mysql - 获取每组的计数,但在每组中的 N 个结果行后停止计数

php - 发送到 $_POST 的 Jquery var 未完成查询,返回错误

PHP/SQL 数据库查询的良好实践和安全性

c# - SQL语句耗时长线程冲突如何解决?

php - Laravel- 在多个表中搜索一个 ID

sql - 如何连接两个表但只返回不匹配的行?