安大
分类: Mysql/postgreSQL
2013-11-25 12:54:19
原文地址:MySQL中处理了多少行 作者:oracle狂热分子
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)