如何在mysql查询结果集中得到记录行号_获取MySQL查询结果集中记录行号的方法...

168c75094eaf8b761f805c6e0754c3f6.png

如果需要在查询语句返回的列中包括一列以指示整个结果集中记录的行号,则ISO SQL: 2003标准建议的方法是提供ROW_NUMBER()/ RANK()函数. Oracle可以使用标准方法(版本8i或更高版本)或非标准ROWNUM. MS SQL Server在2005版中提供了ROW_NUMBER()函数. 但是在MySQL中似乎没有这样的系统内置功能. 尽管LIMIT可以很容易地过滤返回结果集的数量和位置,但是不能选择过滤记录的行号. 据说MySQL很想添加此功能取得查询结果集总数的函数是?,但我没有找到它.

解决方案是使用预定义的用户变量:

84120200227100113.jpg

复制代码,代码如下:

设置@mycnt = 0;

f1b7a8c716fe2e0bfb10a8c85b44d8b6.png

选择(@mycnt: = @mycnt + 1)作为ROWNUM,从tblname顺序按othercol顺序选择othercol;

行号信息保存在查询结果集中的ROWNUM中. 该行编号信息的目的是当您需要根据需要根据某些规则对数据进行排序并在排序后取出一行数据时,并且您想知道该行数据在上一次排序中的位置. 例如:

46107cb55552c691bc4e99ce8fb75e16.png

复制代码,代码如下:

设置@mycnt = 0;

4dc461f075f41886b823102bfc832df5.png

从(

选择(@mycnt: = @mycnt + 1)作为ROWNUM,othercol

从其他名称的tblname顺序开始

)为A,其中othercol = OneKeyID;

当然,您还可以通过创建临时表,然后执行查询取得查询结果集总数的函数是?,将查询结果写入具有auto_increment字段的临时表中,但要考虑到临时表在MySQL主/从模式下可能存在的问题,除非您愿意处理用PHP或其他语言脚本返回的整个结果集,否则使用此临时用户定义变量将更简洁地计算与查询结果集的每一行相对应的行号.

本文来自电脑杂谈,转载请注明本文网址:

http://www.pc-fly.com/a/tongxinshuyu/article-165187-1.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值