我的查询:
UPDATE `settings_products` SET `stock_osrs` = SUM(stock_osrs - 50)
我的管理面板中有一个库存系统,目前显示管理员设置的库存水平,但我正在创建一个API,因此每个已完成的付款都会带走该库存。
让我们说订购的金额是" 50"就像在查询中一样,我想把它从stock_osrs中拿走。
我到底该怎么做?
编辑:我知道我可以使用PHP进行计算,然后从中更新表格,但我觉得这样做的可靠性会低于我必须做的事情" 50,000" - 50 =" 45,950"并将该号码发布到数据库中。
在这个时候可能有另一个命令会导致代码搞砸,因此我需要使用SQL来实现这个目标!
答案 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
。可能你可以稍微修改一下,但这是你正在寻找的东西......