如何内部联接2个SQL表,但仅从第二个表中获取第一个结果?

时间:2019-01-12 17:46:12

标签: php mysql sql

我正在建立一个页面,您可以在其中租用公寓和其他东西, 每个公寓都有很多图片, 所以我做了2张桌子。一个带有所有公寓,一个带有所有图像,我用外键连接到特定的公寓。 我想要所有公寓,但每间公寓只想要一张图片。

我尝试做LIMIT 1,但是后来公寓也限制为1。

这是我的代码:

$sql = "SELECT bolig_boliger.id AS bolig_id, titel, areal, rooms, 
indflytning, husleje, image
FROM bolig_boliger
INNER JOIN bolig_images ON bolig_boliger.id = bolig_images.bolig_id";

2 个答案:

答案 0 :(得分:0)

一种简单的方法是相关子查询。当然,您还没有显示表的布局,因此我必须推测哪些列位于何处以及如何标识最新行。一个合理的猜测是:

SELECT b.id AS bolig_id, titel, areal, rooms, indflytning, husleje, image
FROM bolig_boliger b INNER JOIN
     bolig_images i
     ON b.id = i.bolig_id
WHERE i.id = (SELECT MAX(i2.id) FROM bolig_images i2 WHERE i2.bolig_id = i.bolig_id)

答案 1 :(得分:0)

加入一个子查询,该子查询返回每个公寓ID一行,而不是整个表。

SELECT b.id, b.titel, b.areal, b.rooms, b.indflytning, b.husleje, i.image
FROM bolig_boliger AS b
JOIN (
    SELECT bolig_id, MAX(image) AS image
    FROM bolig_images
    GROUP BY bolig_id
) AS i ON b.id = i.bolig_id