2013-12-02 2 views
0

я объявляю переменную:множество, где оператор, когда или если переменная не является нулевым

declare @Type nvarchar(max); 

Тогда я хочу написать заявление и использовать @Type когда not null:

select * from Table1 
where IsUsed = 1 
if @Type is not 
    and UserId in select UserId in UserTable 

это неверное утверждение , как я должен это делать?


это утверждение: если @type равно нулю, то не заботиться о UserId (выбрать все UserId), но если @type не равно нулю, то выбрать несколько UserId из другой таблицы

ответ

0
select * from Table1 
where IsUsed = 1 
and 
(
    @Type is null 
    or UserId in (select UserId in UserTable) 
) 
+0

Обратите внимание, что он хочет, чтобы '@ Type',' not' был null –

+0

Я пробовал ваше заявление много раз, и он отлично работает, thx – Ian

+0

@Kiril: Да, мой запрос обрабатывает точное условие. –

1
select * 
from Table1 a 
left join UserTable b 
    on a.UserId = b.UserId 
where IsUsed = 1 
    and (@type is not null and b.UserId is not null) 

Но на самом деле у вас должен быть FK на UserId, чтобы вам не пришлось выполнять такую ​​проверку существования.

Смежные вопросы