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

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

Имеется 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 просмотра
Решения вопроса 1
@Samuel_Leonardo
SELECT user_id,(SELECT ps2.post_id  from post ps2 WHERE ps2.user_id=p.user_id ORDER BY ps2.post_id LIMIT 100,1  ) as post_id FROM (
    SELECT DISTINCT user_id FROM post 
) p
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
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


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

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

Похожие вопросы