多个SET语句SQL

时间:2018-11-17 16:32:02

标签: sql sql-server tsql

我创建了一个包含3栏的表格,饥饿,口渴和幸福。 但是我需要创建一个程序来相应地将“幸福感”值更改为“饥饿和干渴状态”。 这就是我做的:

CREATE PROCEDURE StatusRefresh AS
BEGIN
    UPDATE Status 
    SET Hunger = Hunger - 5, Thirst = Thirst - 5

    IF (Hunger > 50 & Thirst > 50)
        THEN
           SET Happiness = Happiness + 5
    ELSE
           SET Happiness = Happiness - 5
 END

我很确定该错误是由于我的If语句引起的。

1 个答案:

答案 0 :(得分:2)

您可以使用case表达式:

CREATE PROCEDURE StatusRefresh AS
BEGIN
    UPDATE Status 
    SET Hunger = Hunger - 5,
        Thirst = Thirst - 5,
        Happiness = (CASE WHEN Hunger > 50 and Thirst > 50 THEN Happiness + 5
                          ELSE Happiness - 5
                     END)
END;

您可能需要调整限制,具体取决于您是希望更新前还是 中的hungerthirst值。按照书面规定,它使用更新前 的值。