Что с IF в этом запросе - PullRequest
       22

Что с IF в этом запросе

0 голосов
/ 10 апреля 2009

Это мой запрос

update b
set b.col1 =   if(1) <= 0
             begin
              select 1 as bal
                end
             else 
              select 0 as bal

from 
dbo.table1 b
inner join  dbo.table1 a
on b.id = a.id
and b.date = a.date

Часть "IF" прекрасно работает сама по себе. Помещая его в эту форму запроса, выдает

Неверный синтаксис рядом с ключевым словом if.

я что-то упускаю, кроме сна.

Ответы [ 4 ]

2 голосов
/ 10 апреля 2009

Вам необходимо использовать оператор CASE WHEN в запросах

update b
set b.col1 = CASE WHEN 1 <= 0 THEN 1 ELSE 0 END
1 голос
/ 10 апреля 2009

«if» является оператором, поэтому вы не можете использовать его как выражение. Вместо этого вы можете использовать «case»:

update b
set b.col1 = case when 1 <= 0 then 1 else 0 end
from  dbo.table1 b
inner join dbo.table1 a on b.id = a.id and b.date = a.date

(хотя выражение в вашем if не имеет особого смысла, поскольку условие всегда имеет одно и то же значение.)

0 голосов
/ 10 апреля 2009

Да.

В некоторых диалектах SQL есть if, это функция. если (expresion1, expresion2, expresion3)

В некоторых диалектах SQL есть if ...then .. endif, который является структурой потока управления.

Некоторые диалекты SQL имеют оба.

Эта более поздняя форма обычно может использоваться только в процедуре / функции хранилища; первый везде, где можно использовать функцию.

0 голосов
/ 10 апреля 2009

как насчет использования

set b.col1 = case when if(1) <=0 then 1 else 0 end
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...