Оператор выбора MYSQL - 5 результатов от каждого пользователя

0

Я пытаюсь сделать оператор select, и он работает, за исключением того, что он не ограничивает количество результатов для каждого пользователя (U.id) до 5.

SELECT F.id,F.created,U.username,U.fullname,U.id,I.id,I.cached_image 
FROM favorites AS F 
INNER JOIN users AS U 
ON F.faver_profile_id = U.id 
INNER JOIN items AS I 
ON F.notice_id = I.id 
WHERE faver_profile_id IN ('.$users.')
GROUP BY I.id HAVING COUNT(U.id) <= 5 
ORDER BY F.faver_profile_id, F.created DESC

Я группируюсь по I.id, чтобы исключить дубликаты. Из моих исследований кажется, что вы можете использовать HAVING COUNT, если вы также группируете этот столбец, но я не могу группировать U.id или я бы потерял строки результатов.

Теги:
select

1 ответ

1

Вместо HAVING, можете ли вы нажать LIMIT 5 там?

Изменить: OP не может LIMIT весь запрос,
и, AFAIK, MySQL не поддерживает LIMIT в подзапросах,
поэтому вы можете создать временную таблицу с пятью (5) идентификаторами пользователей:

create table temp_table ( id INT );
insert into temp_table (id) SELECT U.id FROM users U LIMIT 5;

SELECT F.id,F.created,U.username,U.fullname,U.id,I.id,I.cached_image 
FROM   favorites AS F 
       INNER JOIN temp_table AS Ut 
       ON F.faver_profile_id = Ut.id 
       INNER JOIN items AS I 
       ON F.notice_id = I.id 
WHERE faver_profile_id IN ('.$users.')
GROUP BY I.id 
ORDER BY F.faver_profile_id, F.created DESC;

drop table temp_Table;

Сообщите нам, как это работает.

  • 0
    нет, насколько я знаю, LIMIT можно применять только к полному запросу.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню