반응형
왼쪽 조인의 첫 번째 행만 얻는 것에 대한 많은 스레드를 읽었지만 어떤 이유로 든 이것이 작동하지 않습니다.
내 구조는 다음과 같습니다 (물론 단순화)
피드
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'
해결 방법
@Matt Dodges 대답은 나를 올바른 길로 안내합니다. 그동안 많은 사람들에게 도움이 된 모든 답변에 다시 한 번 감사드립니다. 다음과 같이 작동합니다.
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://stackoverflow.com/questions/15626493
반응형
'MySql' 카테고리의 다른 글
MySQL LIKE 연산자에 의한 MySQL 주입 (0) | 2021.01.08 |
---|---|
MySQL $ result = mysql_query () (0) | 2021.01.08 |
MySQL 여러 열에 의한 SQL ORDER (0) | 2021.01.08 |
MySQL 데이터베이스를 내보낼 때 버전 오류를 제공하는 mysqlworkbench (0) | 2021.01.08 |
MySQL에서 최대 두 값을 얻는 방법은 무엇입니까? (0) | 2021.01.08 |
댓글