有一个程序日志表,
字段
Open_Datetime(打开窗体,关闭窗体), Form_name(窗体名称), statue(状态)
datatime char Bit (正常)/异常
我想控制这个日志表的大小.如控制>500条的时候,就自动删除最前入库(Open_datatime,日期字段排序)的
一天所有入库记录,也就是删除 最久入库的那天所有的记录.这个标志(500)我存放在另外一个系统设置表里。Syssetup的 Maxlog字段求SQL语句最优算法谢谢!
字段
Open_Datetime(打开窗体,关闭窗体), Form_name(窗体名称), statue(状态)
datatime char Bit (正常)/异常
我想控制这个日志表的大小.如控制>500条的时候,就自动删除最前入库(Open_datatime,日期字段排序)的
一天所有入库记录,也就是删除 最久入库的那天所有的记录.这个标志(500)我存放在另外一个系统设置表里。Syssetup的 Maxlog字段求SQL语句最优算法谢谢!
where Open_DateTime<
(select min(Open_Datetime) from
(select top 500 * from
(select Open_Datetime from tbl orderby Open_Datetime desc) a) b)
但我还是不太理解if tb1.recon>500 THen
begin
Delete from tb1
Where Open_datetime in (select min(open_datetime) from tb1)
end else
//什么都不做。我要的大概就是这个意思, SQL
where Open_DateTime<
(select min(Open_Datetime) from
(select top 500 * from
(select Open_Datetime from tbl orderby Open_Datetime desc) a) b)
中:
select Open_Datetime from tbl orderby Open_Datetime desc
是把记录以时间降序排列,这样越靠当前时期的时间记录就在前面。
(select top 500 * from
(select Open_Datetime from tbl orderby Open_Datetime desc) a) b)
取出前最近的前500条记录
(select min(Open_Datetime) from
(select top 500 * from
(select Open_Datetime from tbl orderby Open_Datetime desc) a) b)
取出最近前500条记录中时间最迟的那一个时间
delete from tbl
where Open_DateTime<
(select min(Open_Datetime) from
(select top 500 * from
(select Open_Datetime from tbl orderby Open_Datetime desc) a) b)
比最近前500条记录中时间最迟的那一个时间还要迟的记录就删除
if tb1.recondcount>500 THen
begin
Delete from tb1
Where Open_datetime in (select min(open_datetime) from tb1)
end else
//什么都不做。用SQL怎样写.