根据逻辑参数向 table 添加一列,其中包含 4 个可能的默认值

add a column to a table with 4 possible default value based on logical argument

如何根据满足特定条件的每一行向 table 添加一个编号为 1 到 4 的列?

假设我有一个 table: Like this 有两列 (ID) 和 (RESULTS),我想添加第三列,名为 (SCORE)。

我想根据列 (RESULTS) 中的数字是否符合特定条件,为列中的每一行打分(介于 1 和 4 之间)。

如果RESULT是否定的,我想给它打1分, 如果结果小于 30,得分为 2, 低于 100 分 3 大于 100 得分为 4

我试过使用 CASE 语句,但似乎无法正常工作; 我搜索了有关约束的主题,但它们似乎总是有两个参数——我需要 4

我更新了答案,因为问题中提供了更多详细信息(并修复了一些错误)

请记住将 table_name 和 trigger_name 更改为适当的名称:)。

解决方案:

您应该首先将第三列添加到 table

ALTER TABLE table_name ADD COLUMN SCORE INT;

您应该添加触发器来设置新行的 SCORE:

DELIMITER $$
CREATE TRIGGER trigger_name BEFORE INSERT ON table_name
FOR EACH ROW
BEGIN

    SET NEW.SCORE = CASE WHEN NEW.RESULTS < 0 THEN 1 WHEN NEW.RESULTS < 30 THEN 2 WHEN NEW.RESULTS < 100 THEN 3 ELSE 4 END;

END$$
DELIMITER ;

并且您应该为 table

中存在的行初始化 SCORE 值
UPDATE      table_name t
    SET     t.SCORE = CASE WHEN t.RESULTS < 0 THEN 1 WHEN t.RESULTS < 30 THEN 2 WHEN t.RESULTS < 100 THEN 3 ELSE 4 END;

希望对您有所帮助。