仅在满足两个条件时才更新两个条件

时间:2018-02-13 07:52:22

标签: c# sql sql-server-2014

如果满足两个条件,我想更新查询。我的代码中发生了什么,如果满足其中任何一个,代码就会更新。如果两者同时满足,则不会。

    var cmd = new SqlCommand(@"UPDATE [Truck Table] 
                                  SET [TruckID] = @TruckID, 
                                      [PlateNumber] = @PlateNumber 
                                WHERE [Condition] <> 'Good' AND 
                                      [MaximumVolumeLoad] <= 10", Con)

即使条件良好,代码也会更新单元格,但最大卷负载小于或等于10.我想要的是,如果条件不好并且Maxvolumeload <1,它只更新Cell。 10。

6 个答案:

答案 0 :(得分:0)

代码看起来不错,主要是因为括号:

var cmd = new SqlCommand(@"UPDATE [Truck Table] 
                              SET [TruckID] = @TruckID, 
                                  [PlateNumber] = @PlateNumber 
                              WHERE ([Condition] <> 'Good' AND 
                                    [MaximumVolumeLoad]<10)", Con)

答案 1 :(得分:0)

你的脚本看起来不错,尝试调试它,检查 sql 变量;尝试SSMS中的脚本

var sql = "UPDATE [Truck Table] SET [TruckID] = @TruckID, [PlateNumber] = @PlateNumber WHERE [Condition] <> 'Good' AND [MaximumVolumeLoad]<=10";
var cmd = new SqlCommand(sql, Con)

答案 2 :(得分:0)

如果代码不区分大小写,则代码似乎没问题。

 var cmd = new SqlCommand(@"UPDATE [Truck Table] 
                            SET [TruckID] = @TruckID, 
                                [PlateNumber] = @PlateNumber 
                            WHERE UPPER([Condition]) <> 'GOOD' 
                                 AND [MaximumVolumeLoad]<=10", Con) 

答案 3 :(得分:0)

var cmd = new SqlCommand("UPDATE [Truck Table] SET [TruckID] = @TruckID, [PlateNumber] = @PlateNumber WHERE [Condition] <> 'Good' AND [MaximumVolumeLoad]<10", Con)

您只需要从where子句中的第二个条件中删除等号。在上面做了你。

答案 4 :(得分:0)

没有问题,只有小于或等于第二个where子句的小错误。如果您想要少于10个值,则Make [MaximumVolumeLoad] <10。

答案 5 :(得分:-2)

尝试独立地在Sql中运行命令,看看它是否正常工作然后调试你的应用程序并检查