私は左の結合の最初の行を取得することについて多くのスレッドを読んだが、何らかの理由でこれは私のためには機能しません。ここでLEFT JOINのみ最初の行
は(もちろん簡体字)私の構造である
は
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と一緒に試してみてください。成功もありません。 正直言って、私はそれらの行に何が起こっているのか想像することはできません - おそらく、私はこれがうまくいかない最大の理由です。
SOLUTION:
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'
https://dev.mysql.com/doc/refman/5.7/en/group-by-handling.html – Sinux
ここに解決策がありますhttps://stackoverflow.com/a/7588442/612987 –