SQL使用存储过程中的if语句来更新表

use*_*563 2 sql stored-procedures if-statement sql-update

我有一个表有两个领域的学生,StudentName和Grade.我正在尝试编写一个存储过程来更新Grade.如果学生有A,我想将其更改为B.如果他们有B,我想将其更改为A.如果他们有其他任何我想留下它.这是我最好的尝试

create procedure sp_changegrades
if Grade = 'A' update Students set Grade = 'B'

else if Grade = 'B' update Students set Grade = 'A'
Run Code Online (Sandbox Code Playgroud)

Joh*_*Woo 5

只是用 CASE

UPDATE Students
SET Grade = 
(
   CASE WHEN Grade = 'A' THEN 'B'
        WHEN Grade = 'B' THEN 'A'
        ELSE Grade     -- "If they have anything else I want to leave it alone."
    END
)
Run Code Online (Sandbox Code Playgroud)

要么

UPDATE Students
SET Grade = 
(
   CASE WHEN Grade = 'A' 
        THEN 'B'
        ELSE 'A'
    END
)
WHERE Grade IN ('A','B')
Run Code Online (Sandbox Code Playgroud)