想做一个自动程序,每天执行一次,查询一个MYSQL数据表(ID自增),保留最新的10W条记录,删除前面旧的数据,请教如何用一句MYSQL QUERY可以搞定?delete from table_name where count(id)>100000 and id<(max(id)-100000)  ?
不确定,求助。(PS:数据库现在还没满10W条,但是过2天就到这个数字了)

解决方案 »

  1.   

    先select count(*)得到总记录数X,然后再删除前面的 delete from xxx order by id (X-2W)
      

  2.   


    DELETE d FROM 
    my_table AS d 
    JOIN 
    (SELECT MAX(id)-100000 
    AS lim 
    FROM my_table) 
    AS m 
    ON d.id < m.lim
    这样可以吗?看了许多教程,整理了一下代码。
    分2句执行的话,太简单了,可以不问。
    不过还是希望精简到一句完成任务。
      

  3.   

    DELETE FROM 
    my_table AS d 
    JOIN 
    (SELECT MAX(id)-100000 
    AS lim 
    FROM my_table) 
    AS m 
    ON d.id < m.lim
    多打了个d
      

  4.   

    DELETE FROM my_table  WHERE id < (SELECT MIN(t1.id) FROM(SELECT id FROM my_table  ORDER BY id DESC LIMIT 8)t1);