MYSQL使用数学更新数据库?

时间:2017-12-04 17:18:04

标签: php mysql

我的查询:

UPDATE `settings_products` SET `stock_osrs` = SUM(stock_osrs - 50)

我的管理面板中有一个库存系统,目前显示管理员设置的库存水平,但我正在创建一个API,因此每个已完成的付款都会带走该库存。

让我们说订购的金额是" 50"就像在查询中一样,我想把它从stock_osrs中拿走。

我到底该怎么做?

编辑:我知道我可以使用PHP进行计算,然后从中更新表格,但我觉得这样做的可靠性会低于我必须做的事情" 50,000" - 50 =" 45,950"并将该号码发布到数据库中。

在这个时候可能有另一个命令会导致代码搞砸,因此我需要使用SQL来实现这个目标!

4 个答案:

答案 0 :(得分:3)

UPDATE `settings_products` SET `stock_osrs` = `stock_osrs` - 50

SUM()对记录组进行操作 - 例如,SELECT SUM(stock_osrs) FROM settings_products WHERE...会为您提供一组记录的stock_osrs总数。也可以使用SUM() - 例如,在一个表中获取记录的SUM()并将其存储在另一个表的字段中,但这会变得有点复杂。对于简单的内部一记录数学,只需包括等式。您甚至可以包含多个字段 - 例如UPDATE inventory SET available = onhand - onorder或类似的陈述。

答案 1 :(得分:0)

我认为你只是想在场上减去50,所以这应该有效。

UPDATE `settings_products` SET `stock_osrs` = `stock_osrs` - 50

答案 2 :(得分:0)

使用此查询可能会解决您的问题。

你可以直接执行数学运算。

UPDATE settings_product SET stock_osrs=stock_osrs-50;

我已验证上述查询有效,请尝试

答案 3 :(得分:-1)

我想你想要这样的东西:

UPDATE 
  settings_products AS lg 
  INNER JOIN 
    (SELECT 
      l.`stock_osrs` AS stock_osrs,
      COUNT(l.id) AS total,
      SUM(l.stock_osrs) AS SUM
    FROM
      stock_osrs l 
    GROUP BY l.`stock_osrs`) sub 
    ON lg.`stock_osrs` = sub.stock_osrs SET lg.stock_osrs = sub.sum - 50 ;

我假设此表的主键是id。可能你可以稍微修改一下,但这是你正在寻找的东西......

相关问题