请教一下删除表数据的语句
大家好,请问下我有一个表.表里面其中有一列是日期数据的..
比如现在表有 2000 条数据.
我的程序需要确保数据库的大小.所以打算在每次启动时会判断表里的数据.
如果数据大于 2000 条,就保留最近插入的 1000 条数据.
请问下各位,这样的 sql 语句应该怎样写? 平时没怎么接触 sql.惭愧..
------解决方案--------------------
我提供一种比较笨的方法,我是在ORACLE数据库里试验通过的。
当STUDENT表里的记录超过5条时,仅保留最新的5笔记录。如下:
create table student(stuNo varchar2(20) primary key,stuName varchar2(50),createTime date)
insert into student values('180106201','Jack',sysdate)
insert into student values('180106202','Tom',sysdate)
insert into student values('180106203','Alice',sysdate)
insert into student values('180106204','Bob',sysdate)
insert into student values('180106205','Rose',sysdate)
insert into student values('180106206','Rick',sysdate)
insert into student values('180106207','Esabella',sysdate)
insert into student values('180106208','Iris',sysdate)
insert into student values('180106209','David',sysdate)
insert into student values('180106210','Maria',sysdate)
用这个SQL语句可以查询出一共有多少条记录:
select count(*) from student
如果大于5的话,那么执行这条SQL语句:
delete from student where stuno not in (select stuNo from (select * from student order by createTime desc) where rownum<6)
可能执行效率没那么高,但是也可以解决。这是我的拙见
------解决方案--------------------
没什么好办法,仅靠SQL语句无法实现。
你需要自己写代码或者在存储过程中 select count(*) 得到总记录条数X,如果超过2000,计算需删除记录数为 Y= X-1000 则可以 delete from tabl1 order by id limit Y;