【问题标题】:How to compare value in where clause with max value for an ID?如何将where子句中的值与ID的最大值进行比较?
【发布时间】:2018-12-22 06:27:26
【问题描述】:

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

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

我怎样才能让程序获取所有项目,而不是一次只获取一个?

谢谢!

【问题讨论】:

  • 以下解决方案对您有用吗?

标签: sql sql-server constraints


【解决方案1】:

使用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())

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2020-07-08
    • 2020-02-19
    • 1970-01-01
    • 1970-01-01
    • 2019-05-13
    • 1970-01-01
    • 1970-01-01
    • 2011-03-09
    相关资源
    最近更新 更多