MariaDB ROWNUM() 函数使用指南

在 MariaDB 中,ROWNUM() 是一个内置函数,它可返回当前查询中的每一行的行编号。

MariaDB ROWNUM() 函数与 Oracle 中的 ROWNUM 伪列很很像。 在 Oracle 模式下,您可以省略括号。就和在 ORACLE 中一样。

在 ORACLE 中,您可以使用 ROWNUM 实现 MariaDB 中的 LIMIT

MariaDB ROWNUM() 语法

这里是 MariaDB ROWNUM() 函数的语法:

ROW_COUNT()

参数

MariaDB ROWNUM() 函数不需要任何参数。

返回值

MariaDB ROWNUM() 函数返回当前查询中的每一行的行编号。

MariaDB ROWNUM() 示例

下面的示例使用了来自 Sakila 示例数据库film 表。

要从 film 表中查询前 5 行,请使用以下语句:

SELECT ROWNUM(), film_id, title
FROM film
WHERE ROWNUM() <= 5;

输出:

+----------+---------+------------------+
| ROWNUM() | film_id | title            |
+----------+---------+------------------+
|        1 |       1 | ACADEMY DINOSAUR |
|        2 |       2 | ACE GOLDFINGER   |
|        3 |       3 | ADAPTATION HOLES |
|        4 |       4 | AFFAIR PREJUDICE |
|        5 |       5 | AFRICAN EGG      |
+----------+---------+------------------+

这等同于以下带有 LIMIT 子句的语句:

SELECT ROWNUM(), film_id, title
FROM film
LIMIT 5;

要从 film 表中查询第 6 行到第 10 行,请使用以下语句:

SELECT * FROM (
  SELECT ROWNUM() row_num, film_id, title
  FROM film
) t
WHERE row_num >= 6 AND row_num <=10;

输出:

+---------+---------+------------------+
| row_num | film_id | title            |
+---------+---------+------------------+
|       6 |       6 | AGENT TRUMAN     |
|       7 |       7 | AIRPLANE SIERRA  |
|       8 |       8 | AIRPORT POLLOCK  |
|       9 |       9 | ALABAMA DEVIL    |
|      10 |      10 | ALADDIN CALENDAR |
+---------+---------+------------------+

或者你可以使用以下语句:

SELECT * FROM(
  SELECT ROWNUM() row_num, film_id, title
  FROM film
  WHERE ROWNUM() <= 10
  ) t
WHERE row_num >= 6;

这等同于以下带有 LIMIT 子句的语句:

SELECT ROWNUM(), film_id, title
FROM film
LIMIT 5, 5;

注意,如果您使用以下语句则返回空的结果集:

SELECT ROWNUM(), film_id, title
FROM film
WHERE ROWNUM() > 5;

或者

SELECT ROWNUM(), film_id, title
FROM film
WHERE ROWNUM() >= 6 AND ROWNUM() <= 10;

结论

在 MariaDB 中,ROWNUM() 是一个内置函数,它可返回当前查询中的每一行的行编号。