Как удалить записи из таблицы после лимита - PullRequest
0 голосов
/ 29 октября 2010

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

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 нельзя использовать с ограничением.

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

1 Ответ

0 голосов
/ 29 октября 2010

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

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
);
...