2017-01-18 6 views

答えて

6
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 
     ) 
    ) 
(すなわちIN句を無視する)サブクエリが、私はすべてのユーザーを選択する必要がレコードを返されていないが場合IN句番目にいるすべてのユーザーを選択する必要がサンプルクエリ

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) 

です

1
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) 
     ) 
関連する問題