请使用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
答案 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