【问题标题】:Multiple update conditions in one UPDATE一次更新中的多个更新条件
【发布时间】:2013-03-11 07:32:59
【问题描述】:

我正在开发 WPF、C# 项目并使用 SQL Server 2008。我有一个表 Student_2012_2013,其中有一列名为 varchar(10) 的“类”。我需要在每年年底更新学生的课程。例如,如果班级是'Nursery',则应更新为'LKG',如果是'LKG',则应更新为'UKG','UKG'应更新为班级'1','1'到“2”等等,直到“11”到“12”。

我可以在一个 UPDATE 查询中完成,还是我需要触发 15 个不同的更新查询?

【问题讨论】:

  • 你不能写一个查询并使用 IF THEN 语句吗?

标签: c# sql wpf visual-studio-2010 sql-update


【解决方案1】:

您可以在此使用CASE

UPDATE  Student_2012_2013
SET     class = CASE WHEN class = 'Nursery' THEN 'LKG' 
                    WHEN class = 'LKG' THEN 'UKG'
                    WHEN class = 'UKG' THEN '1'
                    // WHEN ... continue with your conditions...
                    ELSE class // if it doesn't match to any condition
                 END

【讨论】:

  • @SamarthAgarwal 也许,我刚刚添加了ELSE,因为我在想是否可能存在class,它不会在任何条件下下降。但如果您确定所有案例至少在一定条件下都符合条件,请删除 ELSE
  • 非常感谢。使用 SQLCommand 执行命令时出现以下错误:在预期条件的上下文中指定的非布尔类型的表达式,靠近 'THEN'。
  • 你能显示你的整个查询吗?基本上是语法错误。
  • SqlCommand sda_0 = new SqlCommand("update student_2012_2013 SET class = CASE WHEN class = 'Nursery' THEN 'LKG' WHEN class = 'LKG' THEN 'UKG' WHEN class='UKG' THEN '1' WHEN '1' THEN '2' END", con);
  • 最后检查你WHEN你没有条件。应该是..WHEN class='1' THEN '2' END
【解决方案2】:

使用 case 语句更新表中的类列。例如:

Update Student_2012_2013 
set class = CASE 
        WHEN (CLASS = "NURSERY) THEN "LKG"
        WHEN (CLASS="LKG")THEN "UKG"
        ELSE "DEFAULT"
    END

【讨论】:

    猜你喜欢
    • 2019-05-08
    • 2013-10-03
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-12-11
    相关资源
    最近更新 更多