Я использую mysql.MySQL: ВЫБРАТЬ всех пользователей с 5 нераспечатанными сообщениями в последних 5 сообщениях, полученных в таблице сообщений
У меня есть таблица сообщений с идентификатором пользователя, message_id, открытым (истинным или ложным), меткой времени.
Я хочу, чтобы все пользователи, которые не открывающие сообщение там последние 5 сообщений, полученных
Это то, что я прямо сейчас:
SELECT mnc.userid
FROM `messages` mnc
WHERE (select count(*) from messagesas m where m.userid = mnc.userid
and m.message_sendtime_timestamp >= mnc.message_sendtime_timestamp
and m.opened = 'FALSE') >= 6
Но это дает мне пользователей с более чем 6 неоткрыто Сообщения не обязательно последовательных
Здесь приведены примеры данных
CREATE TABLE messages
(`user_id` int, `timestamp` datetime, `opened` varchar(5))
;
INSERT INTO messages
(`user_id`, `timestamp`, `opened`)
VALUES
(1, '2016-01-01 00:00:00', 'false'),
(1, '2016-02-01 00:00:00', 'false'),
(1, '2016-03-01 00:00:00', 'false'),
(1, '2016-04-01 00:00:00', 'false'),
(1, '2016-05-01 00:00:00', 'false'),
(1, '2016-06-01 00:00:00', 'false'),
(2, '2016-01-01 00:00:00', 'false'),
(2, '2016-02-01 00:00:00', 'false'),
(2, '2016-03-01 00:00:00', 'false'),
(3, '2015-01-01 00:00:00', 'false'),
(3, '2016-01-01 00:00:00', 'false'),
(3, '2016-02-01 00:00:00', 'false'),
(3, '2016-03-01 00:00:00', 'false'),
(3, '2016-04-01 00:00:00', 'false'),
(3, '2016-05-01 00:00:00', 'true'),
(3, '2016-06-01 00:00:00', 'false'),
(4, '2015-01-01 00:00:00', 'true'),
(4, '2015-02-01 00:00:00', 'true'),
(4, '2016-01-01 00:00:00', 'false'),
(4, '2016-02-01 00:00:00', 'false'),
(4, '2016-03-01 00:00:00', 'false'),
(4, '2016-04-01 00:00:00', 'false'),
(4, '2016-05-01 00:00:00', 'false'),
(4, '2016-06-01 00:00:00', 'false')
Ожидаемый результат:
userid
1
4
Покажите нам образец данных и ожидаемый результат. \t Пожалуйста, прочитайте [** How-to-Ask **] (http://stackoverflow.com/help/how-to-ask) \t \t И вот отличное место для [** START **] (http://spaghettidba.com/2015/04/24/how-to-post-at-sql-question-on-a-public-forum/), чтобы узнать, как улучшить качество вопроса и получить лучшие ответы. –
Ваше имя говорит, что вы хотите получить последние 5 сообщений, в вопросе говорится, что вы хотите получить пользователей, которые не открывали ни одно из последних 5 сообщений. Что он? См. Http://stackoverflow.com/questions/2129693/mysql-using-limit-within-group-by-to-get-n-results-per-group для того, как сделать первый. Затем вы можете использовать это в подзапросе, чтобы проверить, открыто ли какое-либо из них. – Barmar
@Barmar см. Редактировать – Simon