[英]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.