• linkedu视频
  • 平面设计
  • 电脑入门
  • 操作系统
  • 办公应用
  • 电脑硬件
  • 动画设计
  • 3D设计
  • 网页设计
  • CAD设计
  • 影音处理
  • 数据库
  • 程序设计
  • 认证考试
  • 信息管理
  • 信息安全
菜单
linkedu.com
  • 网页制作
  • 数据库
  • 程序设计
  • 操作系统
  • CMS教程
  • 游戏攻略
  • 脚本语言
  • 平面设计
  • 软件教程
  • 网络安全
  • 电脑知识
  • 服务器
  • 视频教程
  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase
您的位置:首页 > 数据库 >Mysql > MySQL里的found_row()与row_count()的解释及用法

MySQL里的found_row()与row_count()的解释及用法

作者:匿名 字体:[增加 减小] 来源:互联网 时间:2018-12-05

匿名通过本文主要向大家介绍了found_row,row_count等相关知识,希望本文的分享对您有所帮助

MySQL中有两个函数来计算上一条语句影响了多少行,不同于SqlServer/Oracle,不要因为此方面的差异而引起功能问题

出处:mysqlpub.com

MySQL中有两个函数来计算上一条语句影响了多少行,不同于SqlServer/Oracle,不要因为此方面的差异而引起功能问题:

1,判断Select得到的行数用found_rows()函数进行判断。

2,判断Update或Delete影响的行数用row_count()函数进行判断,这里需要注意,如果Update前后的值一样,row_count则为0,而不像SqlServer里的@@rowcount或Oracle里的rowcount,只要update到行,影响的行数就会大于0,而无论update前后字段的值是否发生了变化。

例子说明:

MySQL上的测试(数据库版本为:5.1.30):

1.创建数据库表:
代码如下:
create table t(
id int,
name varchar(50),
address varchar(100),
primary key(id,name)
)engine =InnoDB;

2.插入测试数据:
代码如下:
insert into t
(id,name,address)
values
(1,'yubowei','weifang'),
(2,'sam','qingdao');

3.更新测试
代码如下:
update t
set address = 'weifang'
where id = 1
and name = 'yubowei';

此时查看影响的行数:
select row_count(); ==〉执行结果为0;

4.再次测试
代码如下:
update t
set address = 'beijing'
where id = 1
and name = 'yubowei';

此时查看影响的行数:
select row_count(); ==〉执行结果为1;
从上面的测试可以得出在MySQL中只有真正对记录进行修改了的情况下,row_count才会去记录影响的行数,否则如果记录存在但是没有实际修改
则不会将该次更新记录到row_count中。

这里和oracle中的SQL ROWCOUNT不同

ORACLE上的测试(数据库版本为:10G):

1.创建数据库表:

代码如下:
create table t(
id int,
name varchar2(50),
address varchar2(100),
primary key(id,name)
);

2.插入测试数据:
代码如下:
insert into t
(id,name,address)
values
(1,'yubowei','weifang'),
(2,'sam','qingdao');

3.更新测试
代码如下:
update t
set address = 'weifang'
where id = 1
and name = 'yubowei';

此时查看影响的行数:
v_RowCount := SQL%ROWCOUNT; ==〉执行结果为1;

4.再次测试
代码如下:
update t
set address = 'beijing'
where id = 1
and name = 'yubowei';

此时查看影响的行数:
v_RowCount := SQL%ROWCOUNT; ==〉执行结果为1;

从上面的测试可以得出在ORACLE,只要更新的记录存在,则不论实际由没有修改数据,影响的行数都会被累积记录下来。

注:目前为止没有什么参数能对row_count()能进行设置。如果需要,只能通过其他办法实现。

分享到:QQ空间新浪微博腾讯微博微信百度贴吧QQ好友复制网址打印

您可能想查找下面的文章:

  • MySQL里的found_row()与row_count()的解释及用法

相关文章

  • 2018-12-05MySQL存储过程的使用、执行和创建教程
  • 2017-05-11MySQL笔记之别名的使用
  • 2018-12-05优化mysql 还是使用缓存?
  • 2017-05-11Mac os 解决无法使用localhost连接mysql问题
  • 2018-12-05MySQL 使用自增ID主键和UUID 作为主键的优劣比较详细过程(从百万到千万表记录测试)
  • 2018-12-05关于消除重复行的详细介绍
  • 2018-12-05oracle数据库中如何处理clob字段方法介绍
  • 2018-12-05Mysql相关_MySQL
  • 2018-12-05谈谈DELETE语法的实例教程
  • 2018-12-05MySQL常用语法

文章分类

  • MsSql
  • Mysql
  • oracle
  • MariaDB
  • DB2
  • SQLite
  • PostgreSQL
  • MongoDB
  • Redis
  • Access
  • 数据库其它
  • sybase
  • HBase

最近更新的内容

    • mysql从执行.sql文件时处理\n换行的问题
    • mac安装配置mysql的详情介绍
    • Oracle中的IMU详解
    • 集群运维自动化工具ansible使用playbook安装mysql
    • SQLServer Execpt和not in 性能区别
    • 详细介绍Linux平台mysql开启远程登录
    • SQL数据操作基础(中级)6
    • 【MySQL 03】各种数据库对应的jar包、驱动类名和URL格式
    • MySQL 视图的基础操作(五)_MySQL
    • 分区字段入门教程:10个分区字段零基础入门教程推荐

关于我们 - 联系我们 - 免责声明 - 网站地图

©2020-2025 All Rights Reserved. linkedu.com 版权所有