SQL While 和 if 循环

Posted

技术标签:

【中文标题】SQL While 和 if 循环【英文标题】:SQL While and if loop 【发布时间】: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 循环。我该怎么做? 谢谢

【问题讨论】:

【参考方案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;

【讨论】:

以上是关于SQL While 和 if 循环的主要内容,如果未能解决你的问题,请参考以下文章

SQL中循环和条件语句

在sql server中循环语句 for要怎么使用

5、Python基础之if条件判断和while循环

使用 while 循环回显 PHP 数组

sql server中do while循环怎么写

while循环的条件?