Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1958198
  • 博文数量: 498
  • 博客积分: 2078
  • 博客等级: 大尉
  • 技术积分: 1645
  • 用 户 组: 普通用户
  • 注册时间: 2008-11-18 22:43
个人简介

安大

文章分类

全部博文(498)

文章存档

2017年(1)

2016年(2)

2015年(21)

2014年(90)

2013年(101)

2012年(267)

2011年(16)

分类: Mysql/postgreSQL

2013-11-25 12:54:19


                                     


                                                   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)

 

         

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