mysql更新表并返回所有更新的记录

gopyfrb3  于 2021-06-18  发布在  Mysql
关注(0)|答案(1)|浏览(544)

我需要更新一个mysql表,然后返回一个列表,其中包含所有已更新字段的id和名称。给定我的表结构:


********************  

tbl_books

********************

id - int(11)
bookname -varchar(100)
status - varchar(100)

给定tbl\U图书有以下行:

id: 1
 bookname: 'Midsummer Night Dream'
 status: 'Active'

 id: 2
 bookname: 'Another book name'
 status: 'Inactive'

 id: 3
 bookname: 'So fine'
 status: 'Active'

我需要更新所有显示status='active',set status='disabled'的行,并返回id和bookname作为结果。我知道更新查询的第一部分:

UPDATE tbl_books
 SET status = 'Disabled'
 WHERE status = 'Active'

如何获取所有已更新的值,以便更新行的返回结果如下所示:

id: 1
bookname: 'Midsummer Nights Dream'

id: 3
bookname: 'So fine'
h6my8fg2

h6my8fg21#

实际上,有很多方法可以做到这一点,或者使用游标,选择所有需要更新的行并将它们输入变量,只需使用fetch一次获取要更新的行,就可以执行select操作来获得所需的结果。
或者,您可以使用一个临时表,只需在其中插入由于更新而受影响的所有id,因此这将是一个简单的select查询,其中所有状态为“disabled”,将此结果插入临时表,执行更新,然后简单地使用temp表中的id来获得所需结果的输出。
请阅读本网站:http://www.mysqltutorial.org/mysql-cursor/ 如果您选择使用游标,它肯定会对实现有所帮助。
干杯:)

相关问题