【问题标题】:How to delete the records from a table after a limit如何在限制后从表中删除记录
【发布时间】:2010-10-29 14:51:49
【问题描述】:

我有一张这样的桌子:

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 不能有限制地使用。

有什么帮助吗?

【问题讨论】:

    标签: mysql subquery sql-delete


    【解决方案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
    );
    

    【讨论】:

      猜你喜欢
      • 2011-04-28
      • 2013-07-22
      • 2017-02-02
      • 2013-02-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2015-02-14
      相关资源
      最近更新 更多