首頁  >  文章  >  資料庫  >  如何只檢索 LEFT JOIN 中的第一行?

如何只檢索 LEFT JOIN 中的第一行?

Susan Sarandon
Susan Sarandon原創
2024-11-07 18:01:02553瀏覽

How to Retrieve Only the First Row in a LEFT JOIN?

只檢索LEFT JOIN 中的第一行

在SQL 中,執行LEFT JOIN 操作可能會從右表中取得多行與左表中的一行相符。在某些情況下,需要為左表中的每一行僅檢索右表中的第一行。

考慮以下簡化的資料結構:

**Feeds**
id | title | content
----------------------
1  | Feed 1 | ...

**Artists**
artist_id | artist_name
-----------------------
1 | Artist 1
2 | Artist 2

**feeds_artists**
rel_id | artist_id | feed_id
----------------------------
1 | 1 | 1
2 | 2 | 1

要檢索feed 文章並僅將第一個藝術家與每個feed 關聯,可以嘗試以下語法:

SELECT *
FROM feeds
LEFT JOIN feeds_artists ON wp_feeds.id = (
    SELECT feeds_artists.feed_id FROM feeds_artists
    WHERE feeds_artists.feed_id = feeds.id
    LIMIT 1
)
WHERE feeds.id = '13815'

但是,這種方法可能不會產生所需的結果。為了實現這一目標,請考慮以下替代方案:

SELECT *
FROM feeds f
LEFT JOIN artists a ON a.artist_id = (
    SELECT
      MIN(fa.artist_id) a_id
    FROM feeds_artists fa 
    WHERE fa.feed_id = f.id
)

此修改使用 MIN() 函數來確定具有最低 ID 的藝術家,假設藝術家 ID 隨著時間的推移而增加。因此,LEFT JOIN 將僅檢索與每個提要關聯的第一個藝術家。

以上是如何只檢索 LEFT JOIN 中的第一行?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn