只檢索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中文網其他相關文章!