更新多列?

时间:2013-11-24 10:41:04

标签: sql sql-server sql-server-2008

我想更新多列,如果它达到我的条件,例如

我想做类似

的事情
set column1 ,column 2 ,column 3
if column1=0 if column2=0 if column3=0;
to column1=somevalue,column2=somevalue,column3=somevalue;

以下是我的查询,仅适用于1列,我想在1列以上但在同一查询中执行此操作。

SqlCommand cmd = new SqlCommand("UPDATE DwH_Staging_table SET pestpopulation1=@avg_pest1 

WHERE DistrictName=@DistrictName and TownName=@TownName And VarietyOfCrop=@V_Crop  And 
pestpopulation1=@pest", con1);

cmd.Parameters.AddWithValue("@avg_pest1",row[3]);

cmd.Parameters.AddWithValue("@DistrictName", row[0].ToString());

cmd.Parameters.AddWithValue("@TownName",row[1].ToString());

cmd.Parameters.AddWithValue("@V_Crop",row[2].ToString());

cmd.Parameters.AddWithValue("@pest",0);

cmd.ExecuteNonQuery();

1 个答案:

答案 0 :(得分:1)

如果您想在所有现有值为0时设置列,则可以在一个查询中执行此操作

UPDATE mytable
SET column1 = @value1, column2 = @value2, column3 = @value3
WHERE column1 = 0 AND column2 = 0 AND column3 = 0

但是如果每列单独等于0,我猜你想要单独设置它们。在这种情况下,你需要执行3个单独的查询。

UPDATE mytable
SET column1 = @value1
WHERE column1 = 0

UPDATE mytable
SET column2 = @value2
WHERE column2 = 0

UPDATE mytable
SET column3 = @value3
WHERE column3 = 0
相关问题