更新同一张表的另一列后如何更新列?

时间:2019-04-08 07:09:18

标签: php mysql phpmyadmin

我正在尝试借助phpMyAdmin中以前更新的列来更新列。我正在尝试通过将预付款除以dep(ratio = advance / dep)来计算比率。我有这张桌子:

#id#   #dep#  #cash#  #advance#  #ratio#
----------------------------------------
1       100     100      200        0
----------------------------------------
2       200     300      500        0 
----------------------------------------    

我正在尝试此代码:

Update 'table1' Set 'ratio'= 'advance'/'dep';

当我更新表中列的dep或advance的值时,我期望输出以200/100 = 2的比率进行更新。

1 个答案:

答案 0 :(得分:0)

您可以在表格上使用CREATE TRIGGER来计算和设置受影响的行的新比率:

CREATE TRIGGER upd_ratio BEFORE UPDATE ON table_name
FOR EACH ROW 
BEGIN
    SET NEW.ratio = NEW.advance / NEW.dep;
END

UPDATE并重新计算所有记录,可以使用以下UPDATE语句。创建触发器以初始化ratio列后,应执行一次此操作。

UPDATE `table_name` SET `ratio` = `advance` / `dep`

demo on dbfiddle.uk

您还可以使用CREATE VIEW创建表的视图(无ratio列)。您可以动态计算ratio列,而无需存储和重新计算UPDATE之后的值:

CREATE VIEW view_name AS SELECT *, advance / dep AS ratio FROM table_name;

demo on dbfiddle.uk

注意:就像@ P.Salmon mentioned in the comments一样,您需要使用反引号代替单引号。您当前的UPDATE语句无效。