特定のフィードの LEFT JOIN の最初の行のみを取得するにはどうすればよいですか?

Barbara Streisand
リリース: 2024-11-11 00:06:02
オリジナル
186 人が閲覧しました

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

最初の行のみの LEFT JOIN

データベース クエリの世界では、LEFT JOIN 操作は複数のデータを結合するための強力なツールですテーブル。ただし、場合によっては、LEFT JOIN から最初の行のみを選択的に取得するという課題が発生し、混乱が生じ、失敗したように見える結果が生じることがあります。

そのようなシナリオの 1 つは、フィードに関連付けられた最初のアーティストだけを取得することです。次の単純化されたデータベース構造を考えてみましょう:

  • フィード: id、タイトル、コンテンツ
  • アーティスト: アーティスト ID、アーティスト名
  • フィードアーティスト: rel_id、artist_id、feed_id

指定されたフィードとそれに対応する最初のアーティストを取得するには、次のような直感的なアプローチが必要になる場合があります。

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 サイトの他の関連記事を参照してください。

ソース:php.cn
このウェブサイトの声明
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。
著者別の最新記事
人気のチュートリアル
詳細>
最新のダウンロード
詳細>
ウェブエフェクト
公式サイト
サイト素材
フロントエンドテンプレート