【问题标题】:SQL While and if loopSQL While 和 if 循环
【发布时间】:2021-03-23 16:25:34
【问题描述】:

我正在尝试在 sql 中编写一个 while 循环,但它不能。我正在尝试查看所有行,如果学生的最终分数 >60,我想更新他的分数作为通过。

while(select  Result from Student) IS NOT NULL
  begin
  IF ( select Final_Score from Student )> 60 
  begin
  update Student set Result='Passed'
  end
  else
  begin
  update Student set  Result='Failed' 
  end 
  end

我想使用 While 循环。我该怎么做? 谢谢

【问题讨论】:

    标签: sql loops while-loop sql-update


    【解决方案1】:

    你可以这样写:

    update Student set Result=CASE WHEN Final_Score > 60 THEN 'Passed' ELSE 'Failed' END
    

    基于单个集合的查询将比循环更高效。

    【讨论】:

    • 我得到了这个错误子查询返回了超过 1 个值。当子查询跟随 =、!=、、>= 或子查询用作表达式时,这是不允许的。 for while 子句
    • @fd2812 在我的示例中没有 suqbquery。这是单语句操作
    【解决方案2】:

    SQL 是一种查询语言,没有任何过程元素(循环、条件)。

    您想要的条件只需用 WHERE 子句表示:

    update student
        set result = 'Passed'
    where final_score > 60;
    
    update student
        set result = 'Failed'
    where final_score <= 60;
    

    您也可以使用 CASE 表达式并只运行一个 UPDATE 语句

    update student
        set result = case 
                       when final_score > 60 then 'Passed'
                       else 'Failed'
                     end;
    

    【讨论】: