在MySQL中如何让结果集返回行号
来源:互联网 发布:mac地址修改 编辑:程序博客网 时间:2024/06/02 06:35
在近期的项目中突然用到了原生SQL来查询一些数据,上一个项目中一直使用的Oracle数据库,这次的项目是使用到了MySQL数据库。所以对于Oracle一些自带的函数比较熟悉,但是写的时候发现MySQL中执行不了,这就有了这次的文章。我们在查询数据是如果需要在查询语句返回的列中包含一列表示该条记录在整个结果集中的行号, ISO SQL:2003 标准提出的方法是提供 ROW_NUMBER() / RANK() 函数。 Oracle 中可以使用标准方法(8i版本以上),也可以使用非标准的 ROWNUM ; MS SQL Server 则在 2005 版本中提供了 ROW_NUMBER() 函数;但在 MySQL 中似乎还没有这样的系统自带功能。虽然 LIMIT 可以很方便的对返回的结果集数量和位置进行过滤,但过滤出来的记录的行号却没办法被 SELECT 到。据说 MySQL 是早就想增加这个功能了,但我是还没找到。
解决方法是通过预定义用户变量来实现:
代码如下:
set @mycnt = 0;select (@mycnt := @mycnt + 1) as ROWNUM , othercol from tblname order by othercol;
这样查询出来的结果集中 ROWNUM 就保存了行编号信息。这个行编号信息的某种用途在于当你需要根据需要对数据按照某种规则排序并取出排序之后的某一行数据,并且希望知道这行数据在之前排序中的位置时就用得着了。比如:
代码如下:
set @mycnt = 0;select * from ( select (@mycnt := @mycnt + 1) as ROWNUM , othercol from tblname order by othercol) as A where othercol=OneKeyID;
阅读全文
0 0
- 在MySQL中如何让结果集返回行号
- 如何在MySQL查询结果集中得到记录行号
- 如何在MySQL查询结果集中得到记录行号
- 如何在MySQL查询结果集中得到记录行号
- 如何在oracle和Mysql中限制返回结果集的大小
- 如何在oracle中限制返回结果集的大小
- Oracle在存储过程中如何返回结果集
- 在sql结果中显示行号
- 如何在pb中创建COM组件,并在asp中调用并返回结果集?
- 如何在pb中创建COM组件,并在asp中调用并返回结果集
- Oracle 中,函数如何返回结果集
- MySQL中在查询结果集中得到记录行号的方法
- MySQL中在查询结果集中得到记录行号的方法
- IE中使用google的搜索程序时总是先弹出“查看在google.com.hk上的搜索结果”页面,如何让其直接返回搜索结果?
- ajaxValidator如何在js文件中得到返回结果
- 如何在mysql存储过程中处理select语句返回的多行结果(用游标)
- 关于在Sqlite3中如何判断数据表返回的结果集是否为空的问题解决
- 在存储过程中如何使用另一个存储过程返回的结果集
- jq 第二次选中没效果
- JAVA——设计模式之单例模式
- codevs 1152 细胞分裂
- C++程序员是如何评价GO的
- Mapreduce编程TOP N
- 在MySQL中如何让结果集返回行号
- Android StatusBar 状态栏颜色设置
- java中的基本数据类型一定存储在栈中吗?
- bootbox模态框自定义dialog,fonfirm,alert控件
- JMS简介与ActiveMQ实战
- 如何将TOMCAT注册成系统服务
- ELF相关文章
- 王者荣耀的帧同步机智
- shell脚本实现字符串截取