我正在尝试从许多不同的表中进行选择,并且对于一种约束,主键不能具有与其相关联的项目,而该项目的日期在最近30天内。但是,主键可能具有与其关联的多个项目。
我当前面临的问题是,当有多个关联的项目,其中一个在日期范围内,而另一个在日期范围外时,仍在退还。如果相关项目的日期在过去30天内,我希望将其排除在外。
我如何使程序一次获取所有项目而不是一次?
谢谢!
答案 0 :(得分:0)
使用NOT IN
select *
from table
where id not in (select id from table where datefield > dateadd(day,-30,getdate())
这仅返回table
的记录,而id
没有datefield
已有30天以上的记录。您可能还需要连接,因为您引用了许多不同的表。像...
select *
from table
where id not in (select id
from table
inner join table2 on table2.refid = table.id
where table2.datefield > dateadd(day,-30,getdate())