LEFT JOIN の最初の行のみを取得する
SQL で LEFT JOIN 操作を実行すると、右側のテーブルから複数の行が取得されることがあります。左側のテーブルの 1 つの行に一致します。シナリオによっては、左側のテーブルの各行について、右側のテーブルから最初の行のみを取得することが望ましい場合があります。
次の単純化されたデータ構造を考えてみましょう。
**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
記事をフィードし、最初のアーティストのみを各フィードに関連付ける場合は、次の構文を試みることができます:
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 )
この変更では、アーティスト ID が時間の経過とともに増加すると仮定して、MIN() 関数を使用して最も低い ID を持つアーティストを決定します。その結果、LEFT JOIN は各フィードに関連付けられた最初のアーティストのみを取得します。
以上がLEFT JOIN の最初の行だけを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。