0

我得到了这个选择查询的帮助,我用它来获取两列中具有空值的所有表

select count(*)
from (
   select LastModifiedDate from Table1
      union all
   select LastModifiedDate from Table2
      union all
   select LastModifiedDate from Table3
) a 
where LastModifiedDate is null

要更新所有三个表,那么有更好的方法吗

Update table1
SET LastModifiedDate = GETDATE()
WHERE LastModifiedDate is null

Update table2
SET LastModifiedDate = GETDATE()
WHERE LastModifiedDate is null

等等?抱歉,我将查询拆分为一个查找 CreationDate 和一个查找 LastModifiedDate

4

2 回答 2

0

您想更新三个表,如果其中任一列为 NULL,则将两列设置为当前日期时间。

三个表更新语句就可以了。没有比这更简单的了。

于 2012-08-09T18:21:06.247 回答
0

是的,有更好的方法。正如 Gordon Linoff 在评论中指出的那样,您可能会用您提出的查询覆盖有效的创建日期。

试试这个:

Update table1
SET CreationDate = ISNULL(CreationDate,GETDATE())
  , LastModifiedDate = GETDATE()
WHERE CreationDate is null or LastModifiedDate is null

Update table2
SET CreationDate = ISNULL(CreationDate,GETDATE())
  , LastModifiedDate = GETDATE()
WHERE CreationDate is null or LastModifiedDate is null

Update table3
SET CreationDate = ISNULL(CreationDate,GETDATE())
  , LastModifiedDate = GETDATE()
WHERE CreationDate is null or LastModifiedDate is null

使用ISNULL将保留现有CreationDate数据。您不想将其用于LastModifiedDate,因为您将要修改行,因此该值应该更改。

但是,没有理由尝试重组您的陈述,因为它们没有任何问题。

于 2012-08-09T18:31:41.473 回答