SQL中的WHILE循环使用

–可以嵌套
–没有{},使用begin…end
–不能使用true/false,只能使用条件表达式
–如果里面只有一句就可以不使用begin…and包含
–可以使用continue/break

示例:如果科目名称office不及格的人数超过半数(考试题出难了),则给每个人增加2分,循环加,直到不及格的人数少于一半

declare @subjectName varchar(20) = 'office' --定义科目为office
declare @subjectID varchar(10) = (select subjectID from subject where subjectName = @subjectName) --定义科目id
declare @allNumber int = (select count(*) from result where SubjectID = @subjectID) -- 此科目下一共有多少人数
declare @noPassNumber int = (select count(*) from result where SubjectID = @subjectID and StudentResult < 60) -- 此科目不及格有多少人数
while(1=1)
	begin
		if(@noPassNumber > 1.0*@allNumber/2)
			begin
			update result set StudentResult = StudentResult + 2 where SubjectID = @subjectID and StudentResult <=98
			set @noPassNumber = (select count(*) from result where SubjectID = @subjectID and StudentResult < 60)
			end
		else
			break
	end

效果:
执行前:

在这里插入图片描述
执行后:
在这里插入图片描述


版权声明:本文为slb190623原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。