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 は各フィードに関連付けられた最初のアーティストのみを取得します。
免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。
Copyright© 2022 湘ICP备2022001581号-3