왼쪽 조인의 첫 번째 행만 얻는 것에 대한 많은 스레드를 읽었지만 어떤 이유로 든 작동하지 않습니다.
여기 내 구조가 있습니다 (물론 단순화 됨)
피드
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'