我需要一个基于表字段值的条件Where
子句或Case
语句。SQL需要两个WHERE子句条件
这是我已经和它不工作:
Select n.id, n.message, n.Type
From Notifications n
Where
(
n.Type = 1
And ApplicationMask & isnull(@applicationMask,2147483647)<> 0
And Cast(GETDATE() as Date) Between Cast(StartDate AS Date) and
Cast(EndDate as Date)
And Not Exists(Select notificationID
From NotificationDelivery nd
Where nd.NotificationID = n.id
and nd.UserID = @userID)
)
OR
(
n.Type = 2
And ApplicationMask & ISNULL(@applicationMask,2147483647) <> 0
And Cast(GETDATE() as Date) Between Cast(StartDate AS Date) and
Cast(EndDate as Date)
)
的OR
是搞乱起来,我想。最上面的Where
子句本身起作用,但是像这样它返回的行不应该返回。好像NOT EXIST
部分被忽略。有没有更好的办法?我在SQL查询中不太强大。
您是不是要加'不EXISTS'部分查询的后半部分? – Uxonith
您是否希望将'NOT EXISTS'应用于顶部和底部变体? – jpw
“不工作”和“返回它不应该返回的行”并不是非常具体。你能更具体吗? –