@Network2020

Как использовать LEFT JOIN вместе с LIMIT?

Имеется такой запрос. Никак не могу понять, как сделать так, чтобы для каждой записи из users возвращалось 5 записей из users_images. Хотел как-то сделать lIMIT в конце Left JOIN, но не нахожу как такое реализовать

SELECT
	u.*,
	ui.`image_name`,
	(SELECT COUNT(il.`id`) FROM images_likes AS il WHERE `il`.image_id = `ui`.id) AS count_likes,
FROM users AS u
LEFT JOIN users_images AS ui ON ui.user_id = u.id
WHERE u.flag > 0
  • Вопрос задан
  • 1000 просмотров
Пригласить эксперта
Ответы на вопрос 1
@MaximaXXl
Вот для старой версии написал, через переменные.
SELECT
  u.*,
  ui.`image_name`,
  (SELECT COUNT(il.`id`) FROM images_likes AS il WHERE `il`.image_id = `ui`.id) AS count_likes,
FROM users AS u
LEFT JOIN (SELECT id, user_id,  image_name,
       @row_num :=  CASE WHEN @row_num_val = user_id THEN @row_num + 1
                         WHEN (@row_num_val := user_id) IS NOT NULL THEN 1
                    END   rn
FROM users_images, (SELECT @row_num := null, @row_num_val := null) AS x
ORDER BY user_id, id
--select row_number() over(partition by user_id order by id) rn, user_id , id, image_name
--from users_images
) AS ui ON ui.user_id = u.id and ui.rn <= 5
WHERE u.flag > 0


P.S. должно работать, но писал по памяти, не тестил, лень ;-)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы