限制查询的左连接部分的值

时间:2017-02-11 13:24:07

标签: php mysql

请使用LEFT JOIN将四个表连接在一起,图像表通过img_item链接到items表,因此每个项目可以有更多图像。我想只获取每个项目的第一张图片。我该如何实现这一目标。

 SELECT   * FROM items
 LEFT JOIN category ON items.item_cat = category.cat_id
 LEFT JOIN users ON users.user_id=items.item_user
 LEFT JOIN institutions ON institutions.inst_id=users.user_inst 
 LEFT JOIN images ON images.img_item = items.item_id
 ORDER BY item_id DESC

1 个答案:

答案 0 :(得分:1)

在MySQL中,您可以使用变量枚举结果,然后选择第一个。另一种方法是确定你想要的那个,然后选择那个。以下选择ID最大的图像:

SELECT *
FROM items LEFT JOIN
     category
     ON items.item_cat = category.cat_id LEFT JOIN
     users
     ON users.user_id=items.item_user LEFT JOIN
     institutions
     ON institutions.inst_id = users.user_inst LEFT JOIN
     images
     ON images.img_item = items.item_id AND
        images.img_id = (SELECT MAX(i2.img_id)
                         FROM images i2
                         WHERE i2.img_item = images.img_item
                        );
ORDER BY item_id DESC