我有一个employee
表,该表存储了一些包含salary
的数据。
我添加了另一列grade
。
If salary is between 0-2000 grade is 1.
If between 2000-3000 grade is 2.
If more than 3000 than 3.
我是否需要通过UPDATE
手动执行此操作,还是可以通过ALTER
定义此条件。
答案 0 :(得分:1)
可以通过更新来做到这一点。但是,您可能会发现使用生成的列更好:
alter table employee add grade int generated as
(case when salary < 2000 then 1 when salary < 3000 then 2 else 3 end);
这很方便,因为如果分数改变或添加新行,则不必更新成绩。 GRADE
是在使用时计算的。
答案 1 :(得分:0)
为什么要在表中存储成绩?您总是可以从薪水中提取等级。 您可以选择使用case语句。
答案 2 :(得分:0)
对于您而言,最好的选择是使用CREATE TABLE and Generated Columns作为评论中提到的@Madhur
另一种选择是在下面使用更新查询,但要考虑到任何薪水值更新都可能阻止salary
和grade
列之间的关系。
UPDATE `employee ` SET `grade` = CASE
WHEN salary >= 0 AND salary <=2000 THEN 1
WHEN salary > 2000 AND salary <=3000 THEN 2
WHEN salary > 3000 THEN 3
ELSE `0`
END