Здравствуйте.
Подскажите, пожалуйста, как реализовать такой запрос. Структура таблицы:
USERNAME | DATETIME | IP_ADDRESS
user0
user0
user0
user1
user1
user1
user2
user2
user2
...
userN
userN
userN
CREATE TABLE log (
USERNAME VARCHAR(50) NOT NULL,
DATETIME DATETIME NOT NULL,
IP_ADDRESS VARCHAR(15) NOT NULL
)
COLLATE='utf8_general_ci'
ENGINE=MyISAM;
Мне нужно, чтобы для каждого пользователя в таблице было не больше 100 записей. Соответственно, если их больше, более ранние нужно удалить.
Вот такой запрос как-бы работает
delete from `log`
where `USERNAME` = ? and `DATETIME` not in (select `DATETIME` from (select * from `log` order by `DATETIME` desc limit 100) s )
но я не могу повторять его для каждого USERNAME, т.к их несколько тысяч
where log1.number > 100;
Конечно, всё можно затолкать в один запрос, но выглядеть будет ужасно.
– alexlz Dec 25 '13 at 17:21