最初の行のみの LEFT JOIN
データベース クエリの世界では、LEFT JOIN 操作は複数のデータを結合するための強力なツールですテーブル。ただし、場合によっては、LEFT JOIN から最初の行のみを選択的に取得するという課題が発生し、混乱が生じ、失敗したように見える結果が生じることがあります。
そのようなシナリオの 1 つは、フィードに関連付けられた最初のアーティストだけを取得することです。次の単純化されたデータベース構造を考えてみましょう:
指定されたフィードとそれに対応する最初のアーティストを取得するには、次のような直感的なアプローチが必要になる場合があります。
SELECT * FROM feeds LEFT JOIN feeds_artists ON 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 artist_id FROM feeds_artists fa WHERE fa.feed_id = f.id LIMIT 1 ) WHERE f.id = '13815'
このクエリのコツは、LEFT JOIN ステートメント内でインライン クエリを使用することにあります。このインライン クエリは、アーティスト ID が時間の経過とともに増加するという仮定を利用して、各フィードに関連付けられた最も古いアーティストの Artist_id を選択します。その結果、結果のクエリによって目的の行が取得され、データベース クエリの威力が実証されます。
以上が特定のフィードの LEFT JOIN の最初の行のみを取得するにはどうすればよいですか?の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。