mysql中实现行号,oracle中的rowid
来源:互联网
时间:2026-06-12 07:21:08
MySQL 里没有像 Oracle 那样原生的 rownum 或 rowid,要实现行号功能,就得借助变量来手动模拟。这算是不少从 Oracle 转过来的开发者刚接触 MySQL 时容易踩的一个坑——但解法其实很直接。

变量在 MySQL 中可以用 set @var = 0 或者 set @var := 0 来定义,两种写法都行。但一旦变量出现在 select 语句里,就必须用 := 赋值——因为这时候 = 会被解析成比较运算符,而不是赋值,结果就不对了。
一个典型写法是这样的:
select @rownum:=@rownum + 1 as rownum, b.*
from (select @rownum:=0) a, b
这个技巧在需要取排名、分批读取数据时特别实用,比如想找出第几名到第几名的记录,靠它就能轻松搞定。