比较不同表中列的日期时间值

时间:2015-03-03 05:29:25

标签: sql sql-server

我有像这样的SQL查询

if not exists(select RowId from dbo.Cache where StringSearched = @FirstName and colName = 'FirstName')
begin
   --some code here 
 end

如果语句中的StringSearched的值已经存在于Cache表中,那么上面的if语句的目的不是执行其中的代码段,这意味着它之前已被查找过,因此无需再次进行计算。 if语句中的代码如果被执行则从Table B返回行的行数,然后将这些行插入到Cache表中以继续维护缓存。无论如何。我只有在ModifiedAt表的Cache列最新为ModifiedAt行的Table B列时才需要从缓存中选取记录。

注意:我知道我可能需要在subquery子句中使用where,但在where子句中,我需要检查{{1仅ModifiedAt查询返回的Table B的{​​{1}}列。

如何在不使其变得复杂的情况下继续进行?

1 个答案:

答案 0 :(得分:1)

您可以在当前查询中使用subquery以及Where子句。您没有指定要知道的列,以确定哪些行可以获取值,因此我假设您的tableB也有StringSearchedcolName来获取该字符串值max(ModifiedAt)

IF NOT EXISTS (SELECT * from dbo.Cache as c WHERE StringSearched = @FirstName 
                                             AND colName = 'FirstName' 
                                             AND ModifiedAt  > (Select MAX(ModifiedAt) FROM tableB as tabB WHERE tabB.RowID = c.RowID ))
 BEGIN
    --your query
 END