Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Sql 是否更新多个列?_Sql_Sql Server_Sql Server 2008 - Fatal编程技术网

Sql 是否更新多个列?

Sql 是否更新多个列?,sql,sql-server,sql-server-2008,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_

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

我想做一些像

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();

如果要在所有现有值均为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

e、 g column1的值为0,column2的值为9,column3的值为0。我希望我的查询只检查这一行一次。不要检查多次,因为这将花费太多的时间来处理大量数据。然后,您可以修改第一个查询并用值替换零。但如果我这样做,它将替换所有值,我只希望替换部分值,而不是其他,例如,如果列=0,列=9,列=0;我想将这些列替换为0到某个平均值!!在我的例子中,比较的次数太多了,因为我的数据非常庞大,我想减少这些比较以节省时间。所以我不能像你给出的第二个例子那样使用更新!对不起,那么您必须进行单独的查询。如果要单独更新值,请使用一个查询。这样不行。