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

mysql更新表并返回所有更新的记录,mysql,Mysql,我需要更新一个mysql表,然后返回一个已更新字段的所有id和名称的列表。给定我的表结构: ******************** tbl_books ******************** id - int(11) bookname -varchar(100) status - varchar(100) 给定tbl_书籍有以下行: id: 1 bookname: 'Midsummer Night Dream' status: 'Active' id: 2 bookna

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

********************    
tbl_books
********************
id - int(11)
bookname -varchar(100)
status - varchar(100)
给定tbl_书籍有以下行:

 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'

实际上,有很多方法可以做到这一点,或者使用光标,选择所有需要更新的行并将它们输入变量,并且只需在使用每次获取要更新的行时,执行select操作即可获得所需的结果

或者,您可以使用临时表,只需在其中插入所有因更新而受影响的id,因此这将是一个简单的select查询,从表中选择所有状态=“已禁用”,将此结果插入临时表,执行更新,然后简单地使用temp表中的ID来获得所需结果的输出

请在此网站阅读: 如果您选择使用游标,它肯定会对实现有所帮助


干杯:)

存储时间戳我天生厌恶游标(性能问题)-我检查了您为临时表提供的链接-这是否可行:创建临时表updatedRows UPDATE tbl_books SET status='Disabled',其中status='Active'从updatedRows中选择*,可以,只要从tbl_books中选择*,其中状态为'Disabled',无论您在该表中插入了什么结果,然后执行更新并再次简单地输出tbl_books中的所有数据,前提是它们的id在updatedRows表中。