教程集 www.jiaochengji.com
教程集 >  数据库  >  mysql  >  正文 让mysql的查询结果显示行号的方法

让mysql的查询结果显示行号的方法

发布时间:2015-10-19   编辑:jiaochengji.com
若需要在查询语句返回的列中包含一列表示该条记录在整个结果集中的行号,ISO SQL:2003 标准提出的方法是提供 ROW_NUMBER() / RANK() 函数。

若需要在查询语句返回的列中包含一列表示该条记录在整个结果集中的行号,ISO SQL:2003 标准提出的方法是提供 ROW_NUMBER() / RANK() 函数。
Oracle 中可以使用标准方法(8i版本以上),也可以使用非标准的 ROWNUM ;
MS SQL Server 则在 2005 版本中提供了 ROW_NUMBER() 函数;
MySQL 中似乎还没有这样的系统自带功能。

解决方法:
通过预定义用户变量来实现。
 

复制代码 代码如下:
mysql> set @mycnt = 0;
mysql> select (@mycnt := @mycnt + 1) as ROWNUM , NAME from CHARBASE LIMIT 100;

这样查询出来的结果集中 ROWNUM 就保存了行编号信息。这个行编号信息的某种用途在于当你需要根据需要对数据按照某种规则排序并取出排序之后的某一行数据,并且希望知道这行数据在之前排序中的位置时就用得着了。

为了方便,我们通常将两句合起来执行,以避免变量全局自增:
 

复制代码 代码如下:
mysql> set @mycnt = 0; select (@mycnt := @mycnt + 1) as ROWNUM , NAME from CHARBASE LIMIT 100;

当然,也可以通过创建临时表的方法把查询结果写到某个拥有 auto_increment 字段的临时表中再做查询。

您可能感兴趣的文章:
让mysql的查询结果显示行号的方法
查找和调优MySQL慢查询的方法
mysql 子查询与join性能对比
MySQL/MariaDB中让查询结果多列合并成一列
MySQL子查询的学习小结
mysql子查询的五种方式
mysql优化之如何定位效率较低的SQL
Mysql分页查询方法比较
深入理解mysql的查询缓存
select语句实现mysql分页查询

关键词: mysql  行号   
[关闭]
~ ~