Chinaunix首页 | 论坛 | 博客
  • 博客访问: 2767375
  • 博文数量: 389
  • 博客积分: 4177
  • 博客等级: 上校
  • 技术积分: 4773
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-16 23:29
文章分类

全部博文(389)

分类: Mysql/postgreSQL

2013-11-21 21:53:21


                                     


                                                   MySQL中处理了多少行

         有人问MySQL 中是否也可以实现类似Oracle中某个游标处理了多少数据SQL COUNT,MySQL中没有类似的变量来记录,但是可以换一种方法来实现
比如现在有表

mysql> select sql_calc_found_rows * from t1;
+------+------+
| a    | b    |
+------+------+
|    1 | a    |
|    1 | a    |
|    2 | b    |
|    2 | b    |
|    2 | b    |
|    5 | gg   |
|    1 | a    |
|    1 | a    |
|    2 | b    |
|    2 | b    |
|    2 | b    |
|    5 | gg   |
+------+------+

通过for update来锁定即将被处理行的,同时通过sql_calc_found_rows来记录该查询得到了多少行
mysql> select sql_calc_found_rows * from t1 where a=1 for update;
+------+------+
| a    | b    |
+------+------+
|    1 | a    |
|    1 | a    |
|    1 | a    |
|    1 | a    |
+------+------+
4 rows in set (0.00 sec)

DML语句执行

mysql> delete from t1 where a=1;
Query OK, 4 rows affected (0.01 sec)


通过查询found_rows这个函数就可以得到在delete中处理了多少行,也变相达到了sql count的目的
mysql> select found_rows();
+--------------+
| found_rows() |
+--------------+
|            4 |
+--------------+
1 row in set (0.00 sec)

 

         

阅读(3292) | 评论(0) | 转发(1) |
给主人留下些什么吧!~~