繁体   English   中英

更新同一个TABLE的另一列后如何更新列?

[英]how to update a column after updation of another column of same TABLE?

我试图在phpMyAdmin中的先前更新列的帮助下更新列。 我试图通过除以dep(比率= advance / dep)来计算比率。 我有这张桌子:

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

我正在尝试这段代码:

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

当我更新列dep的值或者在表中提前时,我期望输出比率更新为200/100 = 2。

您可以在表上使用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`

关于dbfiddle.uk的演示

您还可以使用CREATE VIEW创建表格视图(不包含ratio列)。 您可以动态计算ratio列,并且不需要在UPDATE之后存储和重新计算值:

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

关于dbfiddle.uk的演示

注意:正如@ P.Salmon 在评论中提到的,你需要使用反引号而不是单引号。 您当前的UPDATE语句无效。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM