給定學生和成績表,是否有辦法將每個學生的成績增加10%,但沒有超過100?遞增值的限制(標準sql)
現在我做
UPDATE studentCourse
SET grade = grade + 10 * (grade/100)
WHERE csid = 1
換句話說,如果一個學生有60個,在更新之後,他應該有66但是,如果一個學生有一個98,在更新之後他的等級應爲100(而不是108)。
這一切都在標準的SQL
給定學生和成績表,是否有辦法將每個學生的成績增加10%,但沒有超過100?遞增值的限制(標準sql)
現在我做
UPDATE studentCourse
SET grade = grade + 10 * (grade/100)
WHERE csid = 1
換句話說,如果一個學生有60個,在更新之後,他應該有66但是,如果一個學生有一個98,在更新之後他的等級應爲100(而不是108)。
這一切都在標準的SQL
你可以你只要運行兩個語句
UPDATE studentCourse
SET grade = grade + 10 * (grade/100)
WHERE csid = 1;
其次
UPDATE studentCourse
SET grade = 100
where csid = 1
and grade > 100;
COMMIT;
做我沒有一個實例來測試這個代碼,但假設你的數據是realiable(所有0 - 100),你可以使用在CASE語句情況下,分數低於90添加爲你已經是10%,否則在其他情況下,我們可以說,將比分100
如:
UPDATE [studentCourse]
SET grade=
(
CASE
WHEN
(grade <= 90)
THEN grade + 10 * (grade/100)
ELSE
(100)
END
)
WHERE
csid = 1
MySQL有一個功能LEAST()
,可以幫助:
UPDATE studentCourse
SET grade = LEAST(100, grade + 10 * (grade/100))
WHERE csid = 1;
這LEAST()
功能是MySQL特有。如果您想嚴格遵從ANSI SQL,請使用@chrisc建議的CASE
。
難道你的意思是66應該變成72.6? –