Mysql中更新 一列后,如何获取更新的值

通常,更新一列后,需要获取更新的值,做法是这样的:

update some_table set fields=fields+1 where some_condition=some_value;

然后

select fileds from some_tables where some_condition=some_value;

如果希望合并这两条查询,该如何做呢?

 

UPDATE some_table SET
     fields = @amount := fields+1
 WHERE some_condition=some_value LIMIT 1;

 SELECT @amount;

当然,这里建议写成存储过程

 

 

### 如何在 MySQL 中使用游标获取 #### 使用游标的步骤概述 为了在 MySQL 中通过游标获取,通常需要按照以下流程操作: 1. **声明游标** 需要先定义一个游标并将其绑定到特定的 `SELECT` 查询语句上。这一步骤会创建一个指向查询结果集开头的位置指针。 2. **打开游标** 执行此命令使游标处于活动状态,并准备从中读数据行。 3. **遍历数据** 利用循环结构来逐行访问由游标所代表的结果集合中的记录,在每次迭代过程中可以提当前行内的各个字段。 4. **关闭游标** 当完成所有必要的处理后应当及时关闭游标以回收占用的相关资源[^3]。 #### 获取单个列的具体实现方式 下面给出一段具体的例子展示怎样利用游标得表内某一列的数据: 假设有一个名为 `employees` 的表格,其中包含员工姓名 (`name`) 和部门编号 (`dept_id`) 两列信息。现在想要编写一个存储过程用来打印出每一个属于销售部 (假定其 ID 是 10) 的雇员名字。 ```sql DELIMITER $$ CREATE PROCEDURE PrintSalesEmployees() BEGIN DECLARE done INT DEFAULT FALSE; DECLARE emp_name VARCHAR(255); -- 声明游标并将 SELECT 结果赋给它 DECLARE cur CURSOR FOR SELECT name FROM employees WHERE dept_id = 10; -- 设置结束标志变量 DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = TRUE; OPEN cur; read_loop: LOOP FETCH cur INTO emp_name; IF done THEN LEAVE read_loop; END IF; -- 输出每条记录的名字部分 SELECT emp_name AS 'Employee Name'; END LOOP; CLOSE cur; END$$ DELIMITER ; ``` 上述代码片段展示了完整的游标应用模式——从声明直到最后关闭的过程;特别注意这里是如何把每一行查找到的名字存入局部变量 `emp_name` 并随后显示出来的方式[^1]。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值