「労働者が自分の仕事をうまくやりたいなら、まず自分の道具を研ぎ澄まさなければなりません。」 - 孔子、「論語。陸霊公」
表紙 > プログラミング > LEFT JOIN の最初の行だけを取得するにはどうすればよいですか?

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

2024 年 11 月 18 日に公開
ブラウズ:742

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 は各フィードに関連付けられた最初のアーティストのみを取得します。

最新のチュートリアル もっと>

免責事項: 提供されるすべてのリソースの一部はインターネットからのものです。お客様の著作権またはその他の権利および利益の侵害がある場合は、詳細な理由を説明し、著作権または権利および利益の証拠を提出して、電子メール [email protected] に送信してください。 できるだけ早く対応させていただきます。

Copyright© 2022 湘ICP备2022001581号-3