mysql - 在 MySQL 中使用 LIMIT 时如何轻松获取行号?

标签 mysql

假设我有一个包含很多行的数据库表,我想向用户显示这些行。限制输出并制作行页面是有意义的。在 MySQL 中我会这样做:

SELECT * FROM myTable ORDER BY myValue LIMIT 120,10

这将显示从第 120 行开始的 10 行。因此 MySQL 必须在内部使用某种顺序,并相应地对行进行编号。我想显示每一行的行号。如何仅使用 MySQL 访问这些数字?明确地说,我正在寻找这样的东西:

SELECT *,<LIMIT_ROWNO> FROM myTable ORDER BY myValue LIMIT 120,10

我在网上和手册中都看过,但找不到。我更喜欢简单的东西,不使用变量或函数。对此没有预定义的表达式吗?

我可以用 PHP 轻松解决这个问题,但从 MySQL 获取行号会更合乎逻辑。

最佳答案

你不能不使用变量来做到这一点,例如:

SELECT m.*, @rownum := @rownum + 1 as `num`
FROM myTable m, (SELECT @rownum := 120) a 
ORDER BY myValue LIMIT 120,10;

关于mysql - 在 MySQL 中使用 LIMIT 时如何轻松获取行号?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45565537/

相关文章:

mysql - 具有多个表的高级 MySQL 插入

php - 通过 PHP 从 MySQL 获取 100K 行时的奇怪行为

mysql - 查询优化

php - 生成动态 JSTree - JStree 仅在数据库名称硬编码时显示

mysql - 删除 MYSQL 数据库中的行后需要进行后期优化

使用简单包装器,Mysql 查询花费的时间多出 300 倍

php - Mysql新行没有插入默认值

php - 如何使用 mysql 更新查询 (php) 增加一个值

mysql - 查询选择日期时间之外的时间范围

MYSQL 如何解锁表,如果我使用命令 LOCK table table_name WRITE;