MySQL ROW_COUNT() 函数使用指南

MySQL ROW_COUNT() 函数返回上一个 SQL 语句执行的受影响的行数。

ROW_COUNT() 语法

这里是 MySQL ROW_COUNT() 函数的语法:

ROW_COUNT()

参数

MySQL ROW_COUNT() 函数不需要任何参数。

返回值

ROW_COUNT() 函数返回上一个 SQL 语句执行的受影响的行数。ROW_COUNT() 函数的执行逻辑如下:

  • 如果上一个语句是 DDL 语句,ROW_COUNT() 函数将返回 0。比如 CREATE TABLE, DROP TABLE 等。

  • 如果上一个语句是 UPDATE, INSERT, DELETE, ALTER TABLE 或者 LOAD DATA 语句,ROW_COUNT() 函数将返回受影响的行数。

  • 如果上一个语句是一个返回结果集的 SELECT 语句,ROW_COUNT() 函数将返回 -1。

  • 如果上一个语句不是一个返回结果集的 SELECT 语句,ROW_COUNT() 函数将返回受影响的行数。比如: SELECT * FROM t1 INTO OUTFILE 'file_name'

ROW_COUNT() 示例

下面的示例展示了如何使用 ROW_COUNT() 函数。

首先,让我们创建一个表 test_row_count

CREATE TABLE test_row_count(
    id INT NOT NULL AUTO_INCREMENT PRIMARY KEY
);

让我们插入 2 行以供测试:

INSERT INTO test_row_count (id) VALUES (NULL), (NULL);
Query OK, 2 rows affected (0.00 sec)
Records: 2  Duplicates: 0  Warnings: 0

这里, 2 rows affected 告诉我们有 2 行受到了影响,即新增加的两行。让我们使用 ROW_COUNT() 函数看一下受影响的行数:

SELECT ROW_COUNT();
+-------------+
| ROW_COUNT() |
+-------------+
|           2 |
+-------------+

这里, ROW_COUNT() 函数返回的 2 与上面 INSERT 语句返回的 2 rows affected 是一致的。

让我们查询一下表中的数据:

SELECT * FROM test_row_count;
+----+
| id |
+----+
|  1 |
|  2 |
+----+

让我们使用 ROW_COUNT() 函数看一下受影响的行数:

SELECT ROW_COUNT();
+-------------+
| ROW_COUNT() |
+-------------+
|          -1 |
+-------------+

这里,ROW_COUNT() 函数返回了 -1