我有一张这样的表:
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不能用于限制。
有任何帮助吗?
答案 0 :(得分:0)
你需要一个子查询,如下所示:
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
);