Задать вопрос

Необходимо выбрать сотую запись для каждого пользователя

Вот интересная задача для здешних светлых умов.

Имеется MySQL таблица:
CREATE TABLE `post` (
  `post_id` int(11) unsigned NOT NULL AUTO_INCREMENT,
  `user_id` int(11) unsigned NOT NULL,
  PRIMARY KEY (`post_id`),
  KEY `user_id` (`user_id`)
) ENGINE=InnoDB DEFAULT CHARSET=utf8;


Поле post_id автоинкрементное и уникальное. Поле user_id не уникальное. Каждый пользователь со своим user_id может встречаться в этой таблице от одного до бесконечности раз. Количество записей в таблице стремится к 2 млн.

Вопрос. Если пользователь встречается в таблице 100 и более раз, то необходимо узнать post_id сотой записи, к которой относится пользователь.
Т.е. в результирующей выборке должны присутствовать post_id сотой записи по пользователю и его user_id
  • Вопрос задан
  • 3283 просмотра
Подписаться 7 Оценить 1 комментарий
Ответ пользователя Сергей Протько К ответам на вопрос (3)
Fesor
@Fesor
Full-stack developer (Symfony, Angular)
SELECT * FROM (
    SELECT p.post_id, p.user_id, COUNT(p.post_id) as n FROM posts p GROUP BY p.user_id HEAVING n >= 100
) p
INNER JOIN users u
ON u.id = p.user_id


что-то в этом духе…
Ответ написан