Я прочитал много потоков о получении только первой строки левого соединения, но по какой-то причине это не работает для меня.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
, как мне нужно, чтобы отсортировать их по дате (я получил результаты, группируя их таким образом, но результаты которых не новейший)
Пробовал что-то с ВНЕШНИМ ПРИМЕНЕНИЕМ, а также не удался. Честно говоря, я не могу себе представить, что происходит в этих рядах - возможно, самая большая причина, почему я не могу заставить это работать.
РЕШЕНИЕ:
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 –