Я пытаюсь использовать оператор IF, используя предложение select IN . Какой у него правильный синтаксис для следующего оператора T-SQL?

#sql-server #tsql

#sql-server #tsql

Вопрос:

Используя SQL Server 2000; Я пытаюсь определить действие, если значение в поле ВСТАВЛЕННОЙ записи соответствует одному из нескольких различных значений в поле в таблице. Поле y в TableB может быть «один», «два» или «три». ВСТАВЛЕННАЯ запись должна быть одной записью, и поэтому поле x должно быть единственным значением. Следовательно, учитывая приведенный ниже фрагмент кода, каков правильный синтаксис? В частности, куда идет «()» в операторе IF?

 if select x from INSERTED in (select y from tableB) 
and <another condition>
begin

<some code>

end
 

Комментарии:

1. Когда у вас есть что-то большее, чем простое одиночное сравнение, вам нужно обернуть все после IF , но перед BEGIN в круглых скобках.

2. Нам было бы легче помочь, если бы вы могли выразить, чего вы пытаетесь достичь. Заставлять людей догадываться о вашем предполагаемом значении — пустая трата времени каждого.

Ответ №1:

Правильный синтаксис

 IF EXISTS (SELECT * FROM TABLE1    WHERE X IN (1,2))
Begin
 -- code
End
 

Ответ №2:

Вы можете сохранить отдельный флаг в переменных и использовать его в условии IF.

 Declare @chkExist int
Select @chkExist = Count(*) from tableA x in (select y from tableB) 

if ((@chkExist > 0) and (<another condition>))
begin

<some code>

end
 

Ответ №3:

Попробуйте «где существует» вместо «В»

 if exists ( select null from tableA taAlias where (select null from tableB tbAlias where tbAlias.y = taAlias.x ) )
and 1=1
begin

  Select 1 as 'YouNeedAtLeastOneLineOfCodeInThisBeginEnd'
end