簡體   English   中英

在 SQL 中的 where 子句中進行條件檢查

[英]Condition check in where clause in SQL

我正在努力尋找一個允許我檢查特定日期的查詢(大於並且小於 2 個不同的條件)。 現在我的查詢是這樣的

WHERE lastupdatedon < (
CASE
WHEN
  (
         SELECT count(*)
         FROM   mytable) > 0 THEN
  (
         SELECT max(date)
         FROM   mytable)
  ELSE getdate()
END)

但我需要在條件檢查中考慮'>' ,即

  • 如果MyTable中沒有元素,則條件應為LastUpdatedOn < GETDATE()
  • 如果MyTable中的LastUpdatedOn > Max(Date) from MyTable

讓我假設更新的日期永遠不會在未來。 如果是這種情況,那么您可以考慮:

WHERE lastupdatedon > ISNULL( (SELECT MAX(date) FROM mytable), '2000-01-01')

注意:雖然我通常更喜歡COALESCE() ,但ISNULL()在帶有子查詢的 SQL 服務器中(遺憾地)更有效。

也就是說,使用>和遠在過去的日期。 當然,這個邏輯並不完全相同,因為表中的date可能是NULL

另一種選擇是:

WHERE (NOT EXISTS (SELECT 1 FROM mytable) AND
       lastupdatedon < GETDATE()
      ) OR
      lastupdatedon > (SELECT MAX(date) FROM mytable);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM