各位大大好:
我每日有檔案要上傳至資料庫中,每日上傳時,
會先檢查資料庫欄位(FILEDATE)是否小於當日上傳日期,
是的話會刪除舊資料,insert當日資料
但會保留當月最後一筆資料(即月底資料)
請問delete資料時,where的語法該如何判斷?
delete from AAA
where FILEDATE < Getdate()
可以刪除小於當日資料,但後面判斷是否為該月最後一筆資料,不知如何描述?
謝謝
恩...純玩玩~你看看是不是你要的
不過這是只有保留一筆資料~不知道你是不是每月都保留最後一筆@@...
declare @AAA table(FILEDATE datetime)
insert into @AAA
values('2018/5/1 12:15:50'),('2018/5/2 14:18:30'),('2018/5/3 15:10:12')
delete from @AAA
where FILEDATE not in(
select max(FILEDATE)
from @AAA
where FILEDATE < Getdate()
)
select *
from @AAA
以下是每月保留一筆
declare @AAA table(FILEDATE datetime)
insert into @AAA
values('2018/5/1 12:15:50'),('2018/5/2 14:18:30'),('2018/5/3 15:10:12')
,('2018/4/2 12:15:50'),('2018/4/7 14:18:30'),('2018/4/5 15:10:12')
delete from @AAA
where FILEDATE not in(
select max(FILEDATE)
from @AAA
where FILEDATE < Getdate()
group by Year(FILEDATE),Month(FILEDATE)
)
select *
from @AAA