繁体   English   中英

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

[英]How do I inner join 2 SQL tables, but only take the first result from the second table?

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

我尝试做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";

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

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)

与一个子查询联接,该子查询为每个公寓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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM