Как удалить записи из таблицы после лимита

У меня есть такая таблица:

CREATE TABLE  vhist (  id int(10)
 unsigned NOT NULL auto_increment, 
 userId varchar(45) NOT NULL, 
 mktCode int(10) unsigned NOT NULL,  
 insertDate datetime NOT NULL,
 default NULL, PRIMARY KEY  (`id`) 
 ) ENGINE=InnoDB DEFAULT CHARSET=utf8;

Пользователь может иметь более одной записи. Мне нужен оператор SQL, который будет хранить самые последние 50 записей и удалять все после этого предела.

Мне нужно это в одном выражении sql.

Я пробовал это, но не удалось

 delete from vhist v where v.id not in
 (select v.id from vhist v where
 v.userId=12 order by insertDate desc
 limit 50)

но это не удалось на MYSQL, говоря, что IN нельзя использовать с ограничением.

Любая помощь?


person Venkat    schedule 29.10.2010    source источник


Ответы (1)


Вам нужен подзапрос, например:

DELETE FROM vhist WHERE id NOT IN (
    SELECT id FROM (
        SELECT id FROM vhist WHERE userId = 12 ORDER BY insertDate DESC LIMIT 50
    ) as foo
);
person kovshenin    schedule 29.10.2010