这个查询中的IF是什么

时间:2009-04-09 23:05:17

标签: sql

这是我的查询

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 个答案:

答案 0 :(得分:2)

您需要在查询中使用CASE WHEN语句

update b
set b.col1 = CASE WHEN 1 <= 0 THEN 1 ELSE 0 END

答案 1 :(得分:1)

“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中的表达式虽然没有多大意义,因为条件总是具有相同的值。)

答案 2 :(得分:0)

如何使用

set b.col1 = case when if(1) <=0 then 1 else 0 end

答案 3 :(得分:0)

呀。

在一些SQL方言中,有if这是一个函数。如果(expresion1,expresion2,expresion3)

在某些SQL方言中,有一个if ...then .. endif是一个控制流构造。

有些SQL方言都有。

后一种形式通常只能用于商店程序/功能;前者可以使用任何功能。