SQL不在MS ACCESS/VBA上的查询中
我有下面的课程表,有不同的摘录日期SQL不在MS ACCESS/VBA上的查询中,sql,vba,ms-access,Sql,Vba,Ms Access,我有下面的课程表,有不同的摘录日期 ID | Course | ExtractDate 10 | 100000 | 2017-02-28 10 | 100001 | 2017-01-31 10 | 100002 | 2016-12-31 10 | 100003 | 2016-11-30 我需要执行以下SQL脚本,只保留最近3个月的记录,从而删除课程代码为10003的记录 Delete from [Course] where [ExtractDate] not in (select distin
ID | Course | ExtractDate
10 | 100000 | 2017-02-28
10 | 100001 | 2017-01-31
10 | 100002 | 2016-12-31
10 | 100003 | 2016-11-30
我需要执行以下SQL脚本,只保留最近3个月的记录,从而删除课程代码为10003的记录
Delete from [Course] where [ExtractDate] not in (select distinct top 3 [ExtractDate] from [Course] order by [ExtractDate] desc
似乎VBA或MS Access不支持不在的功能,有人对此有解决办法吗
谢谢。不在与目标为空的左连接相同,因此没有连接 所以 与
from [Course]
left join (
select distinct top 3 [ExtractDate]
from [Course]
order by [ExtractDate] desc
) as x on [ExtractDate] = x.[ExtractDate]
where x.[ExtractDate] is null
但是,我并不声称您的任何代码都是正确的,只是这两个代码在SQL中是相同的。如果您想要三个月以上的记录:
Delete from [Course]
where [ExtractDate] < dateadd("m", -3, date());
不需要基于集合的操作。这真的是过去3个月吗?您可以只删除日期较旧的记录。那也会更快。看一看dateadd函数提示,一个负值将减去Access SQL不在的值。您的问题是,您使用distinct和top组合,这是根据Access SQL不允许的:事实上,我以前尝试过以下两种方法,但它们都不起作用。1从[Course]中删除,其中DateAdd'm',3,ExtractDate
Delete from [Course]
where [ExtractDate] < dateadd("m", -3, date());