根据逻辑参数向 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;
希望对您有所帮助。
如何根据满足特定条件的每一行向 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;
希望对您有所帮助。