簡體   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