Reputation: 1613
Following is sample query
Select *
from tb.Users u
where u.Approved = 1
and u.userID IN ( SELECT us.UserID us
FROM tb.UserStatementes us
WHERE us.LogDate between date1 and date2 )
I need to select all users that are in th IN clause however if the subquery has not returned records I need to select all users (ie ignore the IN clause)
Upvotes: 0
Views: 110
Reputation: 45096
Select *
from tb.Users u
where u.Approved = 1
and ( exists ( SELECT 1
FROM tb.UserStatementes us
WHERE us.LogDate between date1 and date2
AND us.USERID = u.USERID )
or not exists ( SELECT 1
FROM tb.UserStatementes us
WHERE us.LogDate between date1 and date2 )
)
Upvotes: 1
Reputation: 38023
Select *
from tb.Users u
where u.Approved = 1
and (
u.userID IN ( SELECT us.UserID us
FROM tb.UserStatementes us
WHERE us.LogDate between date1 and date2
)
or not exists (
select 1
from tb.UserStatementes us
where us.LogDate between date1 and date2
)
)
Upvotes: 6