【问题标题】:How to calulate a number in a table from a different field in the same table?如何从同一个表中的不同字段计算表中的数字?
【发布时间】:2010-06-29 19:52:58
【问题描述】:

假设我有一个基本表 products,有 3 个字段,productname、cost 和 costnotax。

是否可以通过从成本字段中减去一个百分比来自动填写costnotax字段?

【问题讨论】:

  • 您是在询问有关触发器、计算列或更新语句的信息吗?
  • 还是带有计算列的视图?
  • 不是更新,我的意思是在原始插入期间插入新记录。

标签: sql mysql calculated-columns


【解决方案1】:

是的 - 如果你有 6% 的税,只需像这样计算原始成本

UPDATE mytable SET costnotax=cost/1.06

但是,当您可以轻松选择它时,存储它没有什么意义

SELECT cost, cost/1.06 AS costnotax FROM mytable;

【讨论】:

  • 为什么要将成本除以 1.06...这等于减去 12%?它可能真的很明显......但我现在看不到......
  • 如果您想增加 12% 到基本价格,您需要乘以 1.12。因此,要反转该操作并从征税价格中获得基本价格,您需要除以 1.12
【解决方案2】:

是的。

这里有两个示例,使用的税率是原价的 25%。 这是整张桌子

UPDATE table SET costnotax = cost / 1.25;

这是针对特定行的:

UPDATE table SET costnotax = cost / 1.25 WHERE productname = 'Piglet with cream';

【讨论】:

    【解决方案3】:

    如果您需要为每条新记录或更新记录执行此操作,则应为BEFORE INSERT/UPDATE 触发器。如果您需要对表中的所有/特定记录执行一次,请使用UPDATE ...。如果你只需要显示costnotax,那么它根本不必是一个列,你可以像SELECT cost/1.25 as costnotax FROM ...一样查询它

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多