我知道有办法做到这一点。基本上我有变量$amount
,并希望从表格库中的列数量中取出它。
问题是我通常运行一个select查询找出值然后扣除变量并运行另一个更新查询。
运行单个更新的语法是什么,只会减去该值。
所有帮助表示赞赏。
答案 0 :(得分:9)
它看起来很简单。在此示例中,括号是可选的。请务必在WHERE
条款中使用适当的条件!
$qry = "UPDATE table SET column = (column - $amount) WHERE somecondition;";
根据您正在使用的MySQL API,假设变量$amount
已经正确转义,或者更好的是,这是一个准备好的示例的参数,如在PDO中:
$qry = "UPDATE table SET column = (column - :amount) WHERE somecondition;";
$stmt = $db->prepare($qry);
$stmt->execute(array(':amount' => $amount));
答案 1 :(得分:1)
尝试这样的事情:
UPDATE table_name SET amount = amount - $amount WHERE primary_key = value LIMIT 1
如果您想确保amount
不低于零:
UPDATE table_name SET amount = amount - $amount WHERE primary_key = value AND amount >= $amount LIMIT 1
答案 2 :(得分:0)
UPDATE table_name
SET amount = amount -$amount
WHERE primary = id
答案 3 :(得分:0)
出于好奇,你从其他一些sql select获得$ variable?或许像零件清单或其他什么?在存储过程或复合选择中运行整个事物可能会快得多。
如果该$变量是静态的或本地生成的忽略。