mysql 修改数据,并返回修改的数据行

案例1:

需求:查询出可用票,并把订单号和票号绑定,返回票号给后续操作使用

*注:order_id:外部传入, limit 10:购买的票数,state: 1 -> 可用,2 -> 已使用

set @uids := null;
update 
	ticket_no set state = 2,
	order_id = "123456789"
where 
	order_id is null
	and state = 1
	and (select @uids := CONCAT_WS(',', id, @uids)) is not null LIMIT 10;

set @sql := CONCAT("select * from ticket_no where id in (",ifnull(@uids, 'null'),")");


PREPARE stmt FROM @sql;
EXECUTE stmt ;
deallocate prepare stmt;

由于该表数据已达百万,执行时间在可接受范围内

案例2:

需求:按会员编号条件,查出待提示的优惠卷,返回并改变其阅读状态。

set @uids := null;
update sms_coupon_history
	set read_msg = 1
where
	read_msg = 0 and member_id = "1666281215898431489"
	and (select @uids := CONCAT_WS(',', id, @uids)) is not null;
	
	
set @sql := CONCAT("select * from sms_coupon_history where id in (", IFNULL(@uids, 'null'), ")");

PREPARE stmt FROM @sql;
EXECUTE stmt;

原数据

执行sql查询后数据:

再次查看原始数据:

结果:查询条件数据已更新

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值