使用if语句如何替换值

时间:2013-04-13 05:23:44

标签: sql sql-server-2008 if-statement sql-update case

我有两张桌子,

数据库1:

表1:

  • Id -001(int)

  • 名称-xxx(varchar)

  • 男性-0(位)

  • 女性1(位)

数据库2:

表2:

  • Id -1(int)

  • Ca.Name-yyy(varchar)

  • 性别 - M或F(varchar)

这些是我的表格。我想将数据库2,表2中的数据更新为database1,table1。所以我创建更新查询。但是我对性别领域有问题

Select 'UPDATE T1
 SET T1.MALE ='+ CASE WHEN r.Gender = 'M' THEN 0 ELSE 1 END

 FROM T2 As r

在下面的代码中,我主演的内容我怀疑如何在这里使用if语句。有谁理解纠正我的问题?

2 个答案:

答案 0 :(得分:4)

为此目的使用case when

关注这个问题:

SQL Server: CASE WHEN OR THEN ELSE END => the OR is not supported

CASE  
  WHEN GENDER='M' THEN 0 
  ELSE 1 
END 

这可以是你的情况。

有关更多语法详细信息:CASE (Transact-SQL)

答案 1 :(得分:1)

同样,您需要使用CASE WHEN。查询看起来像:

UPDATE T1 
SET T1.MALE = CASE WHEN T2.caname = 'm' THEN 0 ELSE 1 END,
    T1.female = CASE WHEN T2.caname = 'm' THEN 1 ELSE 0 END  // you also need update this otherwise a person would end up with two genders :)
FROM TABLE1 T1
INNER JOIN table2 T2 ON T2.ID = T1.ID

SQL FIDDLE DEMO: