可以根据同一行中的其他值自动设置列中的值吗?

时间:2013-07-16 22:51:53

标签: mysql sql

假设我的行有列:A,B和AB

如果我要为列A插入值5,为列B插入值2,那么MySQL或其他东西是否可以自动获取这些值并对其执行某些操作,例如将其乘以并将其存储到特定列中,例如作为AB?

我的基本目标是根据A和B的乘法得到(使用SQL查询)表中的前5个值。

我该怎么做?

3 个答案:

答案 0 :(得分:3)

使列自动计算基于其他列的列的一种解决方案是使用触发器:

mysql> DELIMITER !

mysql> CREATE TRIGGER calc_ab_ins BEFORE INSERT ON mytable 
FOR EACH ROW BEGIN
  SET NEW.ab = NEW.a * NEW.b;
END !

mysql> CREATE TRIGGER calc_ab_upd BEFORE UPDATE ON mytable 
FOR EACH ROW BEGIN
  SET NEW.ab = NEW.a * NEW.b;
END !

mysql> DELIMITER ;

答案 1 :(得分:2)

是,是,是,是,是,是

如果你想像那样插入它们,就这样做。

    Insert into table (column_ab) values (a * b)

或者当你选择那样做时

   select a , b , a*b as multip from your_table Order by multip desc LIMIT 5

这将获得a和b以及前5的乘法值。

答案 2 :(得分:0)

当插入a和b的列时,只需将两者的乘法插入第三列,就像这样。

INSERT INTO Sample (a, b, ab) VALUES (5, 10, 5*10);

SQL Fiddle of it in action here.