| 您的当前位置:首页 --> MYSQL教程 --> MySQL里的found_row()与row_count()的解释及用法 |
| MYSQL教程 MySQL里的found_row()与row_count()的解释及用法 |
| 浏览次数:1680 关键词 ( ) |
| 查看使用该CPU的产品 查看CPU天梯 |
| CPU型号:MySQL里的found_row()与row_count()的解释及用法 |
| 主频:Ghz |
| 睿频:Ghz |
| 核心数:个 |
| 不支持超核心 |
| 制作工艺: |
| 插槽类型: |
| 功耗:0W |
| L3缓存:0MB |
| 支持最大内存: 0GB |
| CPU详细参数 |
|
出处: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不同 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()能进行设置。如果需要,只能通过其他办法实现。 |
| 下一个产品 SQL计算timestamp的差值的方法 上一个产品 关于mysql中innodb的count优化问题分享 |