左結合の最初の行のみを取得することについて多くのスレッドを読みましたが、何らかの理由で、これは私にとっては機能しません。
これが私の構造です(もちろん簡略化されています)
フィード
id | title | content
----------------------
1 | Feed 1 | ...
アーティスト
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'
feeds_artistsの最初の行のみを取得するだけですが、すでにこれは機能しません。
TOP
データベースが原因で使用できずfeeds_artists.artist_id
、日付で並べ替える必要があるため、結果をグループ化できません(このようにグループ化して結果を得ましたが、最新の結果ではありません)
OUTER APPLYでも何かを試しましたが、成功しませんでした。正直に言うと、それらの行で何が起こっているのか本当に想像することはできません。おそらく、これを機能させることができない最大の理由です。
解決:
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'