如何比较where子句中的值和ID的最大值?

时间:2018-07-13 20:35:31

标签: sql sql-server constraints

我正在尝试从许多不同的表中进行选择,并且对于一种约束,主键不能具有与其相关联的项目,而该项目的日期在最近30天内。但是,主键可能具有与其关联的多个项目。

我当前面临的问题是,当有多个关联的项目,其中一个在日期范围内,而另一个在日期范围外时,仍在退还。如果相关项目的日期在过去30天内,我希望将其排除在外。

我如何使程序一次获取所有项目而不是一次?

谢谢!

1 个答案:

答案 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())