通过数学方式操作其他字段中的值来创建新字段

时间:2012-07-24 06:43:48

标签: mysql

这里有点新手。我目前正在研究一个列出不同汽车细节的MySQL表。我需要一个由其他三个领域的信息构建的新领域。所以我有'加速','速度'和'制动',它们都包含两位数的整数,这些整数被平均到另一个我称之为“平均”的字段。

逻辑是'加速'+'速度'+'制动'/ 3

我似乎无法弄清楚执行此操作的正确语法。我特别需要将它作为一个字段,因为我需要将这些值显示在其他查询上。我知道SELECT查询可以获得我需要的结果值,但是如何将这些值导入该表的永久字段?

提前感谢您提供任何帮助。

1 个答案:

答案 0 :(得分:1)

  1. 首先,您需要更改表架构以定义新列:

    ALTER TABLE my_table ADD COLUMN Average FLOAT;
    
  2. 接下来,更新表格以设置值:

    UPDATE my_table SET Average = (Acceleration + Speed + Braking) / 3;
    
  3. 考虑如何为新插入/更新的数据正确设置Average。也许使用触发器:

    CREATE TRIGGER calc_average_ins AFTER INSERT ON my_table FOR EACH ROW
    SET NEW.Average = (NEW.Acceleration + NEW.Speed + NEW.Braking) / 3;
    
    CREATE TRIGGER calc_average_upd AFTER UPDATE ON my_table FOR EACH ROW
    SET NEW.Average = (NEW.Acceleration + NEW.Speed + NEW.Braking) / 3;
    
  4. 您可能需要考虑在view中引入此列,以便在运行时根据需要创建平均值,从而防止它与基础数据值失去同步(但请注意,否则更长时间实现缓存值的性能优势:

    CREATE VIEW my_view AS
    SELECT *, (Acceleration + Speed + Braking) / 3 AS Average FROM my_table;
    

    最后,请注意您的平均值在现实世界中没有任何物理意义(它的单位是什么?):更有意义的指标可能更适合您的需求。