我一直试图找到这个问题的答案,但在我的研究中没有找到任何明确的"是"或"否".
我正在运行这样一个简单的MySQL查询:
UPDATE item SET `score`=`score`+1 WHERE `id`=1
Run Code Online (Sandbox Code Playgroud)
有没有办法让该查询返回更新的值,而不是受影响的行数?作为参考,我在PHP中这样做,所以实际代码如下:
$sql = "UPDATE item SET `score`=`score`+1 WHERE `id`=1";
$new_value = mysql_query($sql);
//Unfortunately this does not return the new value
Run Code Online (Sandbox Code Playgroud)
我知道我可以做第二个查询而只是选择值,但我试图尽可能减少查询.有办法吗?
Mic*_*ski 23
您可以使用更新的存储过程执行此操作,然后在输出参数中选择新值.以下命令返回一个new_score具有新值的列.
DELIMITER $$ -- Change DELIMITER in order to use ; withn the procedure
CREATE PROCEDURE increment_score
(
IN id_in INT
)
BEGIN
UPDATE item SET score = score + 1 WHERE id = id_in;
SELECT score AS new_score FROM item WHERE id = id_in;
END
$$ -- Finish CREATE PROCEDURE statement
DELIMITER ; -- Reset DELIMITER to standard ;
Run Code Online (Sandbox Code Playgroud)
在PHP中:
$result = mysql_query("CALL increment_score($id)");
$row = mysql_fetch_array($result);
echo $row['new_score'];
Run Code Online (Sandbox Code Playgroud)
Vol*_*erK 11
不,没有像postgresql的UPDATE ...在MySQL中返回output_expression(还没?).
| 归档时间: |
|
| 查看次数: |
20402 次 |
| 最近记录: |