就是数据库指定表中保持1000条(符合where条件的)数据,如果有新的(符合where条件的)插入,就把旧的(符合where条件的)删除;
问题是,我不知道旧数据的ID啊,如果一个个去select出来也太麻烦了,请问有简单的SQL语句或能提供下思路方法,
谢谢

解决方案 »

  1.   

    新旧记录按ID判断就是,就是有新的符合条件的,比如flag=1的插入,就把最早的且flag=1的删除
      

  2.   

    假设ID唯一
    delete a from a left join
    (select id from tt order by id desc limit 1000) b
    on a.id=b.id where b.is is null
      

  3.   

    假设ID唯一
    delete a from a left join
    (select id from tt order by id desc limit 1000) b
    on a.id=b.id where b.id is null
      

  4.   

    select id from tt order by id desc limit 1000中tt是什么意思,现在就一张表啊
    问题很简单,就是自动更新,有新的进来,就把最早的删除,只不过多加了个flag=1的条件啊
      

  5.   

    放在EVENT OR 用语言在计划任务中调用执行
      

  6.   

    delete from 指定表 where flag=1 order by id limit 10;
      

  7.   

    http://topic.csdn.net/u/20091020/22/c51bb709-6dbc-4fd1-b874-077714ed547e.html
    另征集定时执行mysql数据库任务方案。
      

  8.   

    delete a from a where id not ni (select id from tt order by id desc limit 1000)
      

  9.   

    还是没明白,比如我现在有一张表a,如下:
    id(自增主键)  |  flag |  value
    1                    |   0    |     12
    2                    |   1    |     17
    3                    |   1    |     2
    4                    |   0    |     9
    5                    |   1    |     8
    6                    |   1    |     5
    7                    |   1    |     11
    我要保持flag =1的记录只有3条,首先我select count(*) from a where flag=1,结果为5>3
    下面我要调用函数删除,最早的flag =1的记录
    如果用最笨的方法就是判断count是否大于3,如果大于,循环下面的语句:
    DELETE FORM a where id=(SELECT id FROM a WHERE flag=1 ORDER BY id ASC LIMIT 1) 
    不过这个方法太笨了,所以问下有什么简单点的方法或思路
    你写的SQL语句我还是没看明白啊,delete a from a 是什么意思,没遇到过这种写法啊
      

  10.   

    看看MYSQL的HELP。基本语法delete a from a left join
    (select id from tt order by id desc limit 3) b
    on a.id=b.id where b.id is null
      

  11.   

    你这个语句好像把最新的3条都删除了啊,早的反而没被删除掉
    是不是这样写的
    DELETE a FROM test_tb AS a LEFT JOIN (SELECT id FROM test_tb WHERE flag=1 ORDER BY id DESC LIMIT 3) b ON a.id=b.id WHERE flag=1
      

  12.   

    你这个语句好像把最新的3条都删除了啊:不会吧,有条件
    where b.id is nulldelete a from a left join
    (select id from tt order by id desc limit 3) b
    on a.id=b.id where b.id is null
      

  13.   

    DELETE a FROM test_tb AS a LEFT JOIN (SELECT id FROM test_tb WHERE flag=1 ORDER BY id DESC LIMIT 3) b ON a.id=b.id WHERE flag=1 AND b.id is null
    对了,谢谢