我有这样的桌子
tbl_user
id user_id amount
首先,我想基于id更新一行
$amount = 123; // dyanamic value $sql = "UPDATE tbl_user SET amount=amount-'$amount' WHERE id='$id' LIMIT 1 ";
现在我想获取金额列的更新值我已经应用了此sql
$sql = "SELECT amount FROM tbl_user WHERE id='$id' LIMIT 1 ";
我的问题是我可以结合以上sql或任何单个查询来实现上述任务吗?
您可以模仿的最好的方法是使用两行查询,可能使用类似以下的变量:
UPDATE tbl_user SET amount = @amount := amount-'$amount' WHERE id='$id' LIMIT 1; SELECT @amount;
然后,您可以做的最好的事情就是创建一个Stored Procedure赞:
Stored Procedure
DELIMITER // CREATE PROCEDURE `return_amount` () BEGIN UPDATE tbl_user SET amount = @amount := amount-'$amount' WHERE id='$id' LIMIT 1; SELECT @amount; END //
然后致电给Stored Procedure您PHP。
PHP
注意:PostgreSQL具有这样的选项usingRETURNING语句,如下所示:
PostgreSQL
RETURNING
UPDATE tbl_user SET amount=amount-'$amount' WHERE id='$id' LIMIT 1 RETURNING amount
看这里