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

出处: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()能进行设置。如果需要,只能通过其他办法实现。

时间: 2024-11-20 23:18:33

MySQL里的found_row()与row_count()的解释及用法_Mysql的相关文章

mysql数据库备份及恢复命令 mysqldump,source的用法_Mysql

还原一个数据库:mysql -h localhost -u root -p123456 www<c:\www.sql 备份一个数据库:mysqldump -h localhost -u root -p123456 www > d:\www2008-2-26.sql //以下是在程序中进行测试 //$command = "mysqldump --opt -h $dbhost -u $dbuser -p $dbpass $dbname | gzip > $backupFile&qu

jquery-JQuery 语句,easyui里面的,能不能给解释下什么意思? 函数如何调用的,谢谢了

问题描述 JQuery 语句,easyui里面的,能不能给解释下什么意思? 函数如何调用的,谢谢了 function saveUser(){ $('#fm').form('submit',{//当提交表单时候,会发生submit事件 url: url, onSubmit: function(){ return $(this).form('validate'); }, success: function(result){ var result = eval('('+result+')'); if

mysql实例-mysql里实例的概念是什么意思?

问题描述 mysql里实例的概念是什么意思? 我是一个mysql初学者,在mysql中我们通常会遇到"实例"这个概念,我想知道"实例"的定义是什么?在mysql的英语文档中,""实例""的英语单词是什么? 解决方案 应该对应于instance.就是一个操作的数据库的代称. 解决方案二: 指多个mysql进程

如何用java在mysql里创建表头

问题描述 如何用java在mysql里创建表头 用java在mysql里创建表头,表头是从网页的table标签里获取的属性值.CS萌新求大大解决一下.O(∩_∩)O谢谢 解决方案 create table (字段)http://www.pudn.com/downloads553/sourcecode/java/detail2282083.htmlhttp://blog.csdn.net/rui_dlut/article/details/6758031

vc获得sql里数据-vc获得mysql里int数据的语句

问题描述 vc获得mysql里int数据的语句 我知道vc获取mysql里char类型数据的语句是例如(工号是char类型时):varFld = pRs->Fields->GetItem(""max(工号)"")->Value;但是如果是获取int类型就不行了,例如(工号是int类型),上面的语句链接编译没错,运行出错.求代码.谢谢啦.没有Q币了,麻烦各位了 解决方案 你可以用字符串方式获取以后,自己再转换会int, atoi() 解决方案二: 我

mysql 里executeQuery在for循环里执行失效怎么解决?

问题描述 mysql 里executeQuery在for循环里执行失效怎么解决? 问题就是,之前是有时候可以上传图片,并被数据库记录,但会经常图片上传成功,数据库记录却没有. 在javabean的数据库里是这样创建conn 和 st 及rs的: public ft_con(){ if(conn==null){ try{ //Class.forName("com.microsoft.sqlserver.jdbc"); 基本不使用. //Class.forName("com.mi

mysql-oracle的sql语句怎么转换成MySQL里的sql语句呢

问题描述 oracle的sql语句怎么转换成MySQL里的sql语句呢 oracle的sql语句怎么转换成MySQL里的sql语句呢 解决方案 http://jingyan.baidu.com/article/ca41422fe01f251eaf99ed6e.html试试这个经验 解决方案二: 在oracle里面拼接成MySQL的语句

mysql-请问往MYSQL里导入一个SQL表,为什么会报这个错误?

问题描述 请问往MYSQL里导入一个SQL表,为什么会报这个错误? 开始导入----------> 然后就提示--------> 文件路径: 我选择的路径没错额:D:源代码下载存储day7-mysql多表资料与作业EMPDEPT.sql 信息日志如下: [Err] 1051 - Unknown table 'dept' [Err] -- ---------------------------- -- Table structure for DEPT DROP TABLE DEPT; CREAT

大数据-如何把一串wifi列表分类存储到mysql里

问题描述 如何把一串wifi列表分类存储到mysql里 我这里现在有每隔30s从手机读取的附近WIFI列表,是JSON格式的,格式如下请问该怎么建立mysql表,才能便于读取,我现在的表是简单的罗列,会出现一些问题,比如我想找其中强度标准差最大的AP,但是因为同一个AP在不同行出现的位置不一样,不知道该怎么操作..求各位想想办法..有没有办法存储为第一张图片那种多级结构 解决方案 每个AP的信息作为数据库一行数据插入进去,然后其他信息可以放到另一个表,多个表之间用wifi id等来做关联