2010-10-29 79 views
0

後刪除表中的記錄我有一個這樣的表:如何限制

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並稱不能與限制使用。

任何幫助?

回答

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