当前位置: 首页 > 面试题库 >

在MySQL中获取更新的值,而不是受影响的行

史修明
2023-03-14
问题内容

我一直在寻找这个问题的答案,但是在我所有的研究中都没有找到任何确定的“是”或“否”。

我正在运行一个简单的MySQL查询,如下所示:

 UPDATE item SET `score`=`score`+1 WHERE `id`=1

该查询是否有办法返回更新的值,而不是受影响的行数?作为参考,我正在用PHP进行此操作,因此实际代码如下所示:

 $sql = "UPDATE item SET `score`=`score`+1 WHERE `id`=1";
 $new_value = mysql_query($sql); 
 //Unfortunately this does not return the new value

我知道我可以进行第二次查询,而只是选择值,但是我正在尝试尽可能减少查询。有办法吗?


问题答案:

您可以使用更新后的存储过程来执行此操作,然后将新值选择到输出参数中。以下返回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 ;

在PHP中:

$result = mysql_query("CALL increment_score($id)");
$row = mysql_fetch_array($result);
echo $row['new_score'];


 类似资料:
  • 问题内容: 我目前正在从事C#项目,并且正在运行一个插入查询,该查询也同时进行选择,例如: 有没有一种方法可以查看此查询期间插入了多少行? 问题答案: -返回受影响的行数。

  • 问题内容: 使用php / mysql如何获取查询影响的行数? 到目前为止我尝试过的是: 但它表示警告:mysql_num_rows():提供的参数不是有效的MySQL结果资源 问题答案: 如果您使用的是PDO(我建议使用PDO),则直接查询将返回受影响的行数。对于Prepared Statements, 有一个称为的方法。 如果您使用的是mysql函数,则有。 编辑: 似乎您正在使用mysql函

  • 问题内容: 我如何查找我的更新是否成功?我使用where uniqueName = name进行更新,因此我应该始终只更新0行或1。什么是检查我是否更新了行的好方法? 问题答案: 将返回受更新影响的行数。 http://us.php.net/manual/zh/function.mysql-affected- rows.php

  • 问题内容: 我有一个关于Python和sqlalchemy模块的问题。sqlalchemy Python中的等效项是什么? 问题答案: 对象也具有属性。

  • 大家好。 受影响的0行 当我看到这个结果时,我想‘有语法错误吗?’但是,没有。更新查询工作正常。Numtable的数据从(1,2)更改为(3,4)。 我还发现了这个。我删除了“开始事务;”和'COMMIT'语句。并再次执行updateNum SP。结果是...

  • 问题内容: 我知道如何从bash执行MySQL查询/命令: 要么 如何捕获查询影响了多少行? 我试着做: 它确实执行命令,但不返回受影响的行数。 问题答案: 放 作为批处理中的最后一条语句并解析输出