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

标签 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'

最佳答案

实际上有很多方法可以做到这一点,要么使用游标,选择所有需要更新的行并将它们输入到变量中,然后简单地在使用一次获取要更新的行时执行选择操作以获得所需的结果。

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

请阅读此网站:http://www.mysqltutorial.org/mysql-cursor/ 如果您选择使用游标,它肯定会对实现有所帮助。

干杯:)

关于mysql更新表并返回所有更新的记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52957929/

相关文章:

mysql - MySQL中Rand函数与Union结合使用的方法

从数据库获取信息时出现 PHP 错误

mysql - MAMP MySql 中缺少 UTF-8 字符集

mysql - MySQL 上的子查询

mysql - 为什么我可以在 innodb 的一条记录上有两个锁(X 和 S)?我知道S锁和X锁不能同时存在

java - 如何在preparedstatement中使用JDBC通配符创建mysql表

mysql - 从单个表中的不同行选择不同的值

php - 通过 PHP 和 jQuery 将 MySQL 解析为 JavaScript 数组

php - mySQL 将标题大写结果作为 JSON 数组 | PHP

mysql - 使用第三个表中的 ID 在两个表之间复制数据