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

时间:2018-10-23 21:12:22

标签: mysql

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

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

鉴于tbl_books具有以下行:

 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'的行,设置status ='Disabled'并返回ID和书名作为结果。我知道更新查询的第一部分:

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

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

id: 1
bookname: 'Midsummer Nights Dream'

id: 3
bookname: 'So fine'

1 个答案:

答案 0 :(得分:1)

实际上,有很多方法可以执行此操作,或者使用游标,选择所有需要更新的行并将其输入变量中,然后就像您每次获取要更新的行一样,执行选择操作以获得所需的结果。

或者您可以使用临时表,并在其中插入将由于更新而受影响的所有ID,因此这将是来自表的所有状态='Disabled'的简单选择查询,将此结果插入到临时文件中,执行更新,然后只需使用临时文件表中的ID即可获得所需结果的输出。

在以下站点上阅读:http://www.mysqltutorial.org/mysql-cursor/ 如果您选择使用游标,它将肯定对实现有帮助。

干杯:)