MySQL中如何在选出的结果集中打印某条记录的位置

在MySQL中,有时候我们要选出N条记录,希望在结果中每条记录中加上一列标记该记录是第几条。
这个问题在oracle中,用rownum就可以简单的实现,但是在MySQL中,怎么去实现呢?下面给大家举一个例子:
select t.page,t.pv,@rn:=if(1=1,@rn+1,@rn) as rn
from
(select
page,
pv

from  
module_page_statis
where
statisDay=’2010-05-31′ and module=’new_info’ order by 2 desc  limit 10) t, (select @rn:=0) t2
order by t.pv desc

这里略微解释下:
1,(select @rn:=0) 仅仅起到初始化的作用。
2,@rn:=if(1=1,@rn+1,@rn) 这一句是每选出一条记录出来,执行一次。当然这里面还可以填充更复杂的逻辑。

from:mysql社区

一条评论

  • netshield 发布于   2010.06.03 12:04

    哥们,要租用服务器不?

    武汉网盾IDC现推出10台特价主流机型,配置为四核xeon3220/4G内存/500g企业级硬盘,限量10台,20Mbps独享带宽,1000元/月。售完即止。
    如有需要,请联系我们!在此祝您财源广进!www.netshield.cn
    淘宝店:http://netshield.taobao.com/ QQ:6520895

    • (Required)
    • (Required, will not be published)

    注意: 评论者允许使用'@user空格'的方式将自己的评论通知另外评论者。例如, ABC是本文的评论者之一,则使用'@ABC '(不包括单引号)将会自动将您的评论发送给ABC。使用'@all ',将会将评论发送给之前所有其它评论者。请务必注意user必须和评论者名相匹配(大小写一致)。
    • 关于BLOG

      本站架设在MyHost123上,由CentOS强力驱动

    • 分类目录

    • 那些句子

      “生活中不只有C++,代码和编程,还有更多的东西值得我们去体味,朋友,亲人,爱人都更值得花时间与他们在一起。走出办公室,离开计算机,去亲近大自然,享受美餐,散散步,打打球。拥有美好的生活才能创造出完美的程序。”—Boost程序库完全开发指南
    • 近期文章

    • 标签云

    • 我的饭否

      饭否
    • 赞助商链接

    • 已屏蔽的傻逼评论