ホームページ >データベース >mysql チュートリアル >LEFT JOIN の最初の行だけを取得するにはどうすればよいですか?

LEFT JOIN の最初の行だけを取得するにはどうすればよいですか?

Susan Sarandon
Susan Sarandonオリジナル
2024-11-07 18:01:02605ブラウズ

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

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

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。