如何自动将值插入到基于mySQL中已经存在的列的新列中

时间:2018-11-21 12:48:30

标签: mysql sql

我有一个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定义此条件。

3 个答案:

答案 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

另一种选择是在下面使用更新查询,但要考虑到任何薪水值更新都可能阻止salarygrade列之间的关系。

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