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

时间:2017-08-08 10:12:46

标签: 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获取行号更合乎逻辑。

2 个答案:

答案 0 :(得分:5)

你不能在不使用变量的情况下这样做,例如:

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

答案 1 :(得分:2)

set @rownum=120;
SELECT *,@rownum:=@rownum+1 as rn FROM myTable ORDER BY myValue LIMIT 120,10;