| 订阅 | 在线投稿
分享
 
 
 

如何在MySQL查询结果集中得到记录行号

2008-06-01 03:27:36 编辑來源:互联网 国际版 评论
 
 
本文为【如何在MySQL查询结果集中得到记录行号】的汉字拼音对照版显示拼音
  ruguoxuyaozaichaxunyujufanhuideliezhongbaohanyiliebiaoshigaitiaojiluzaizhenggejieguojizhongdexinghao ISO SQL:2003 biaozhuntichudefangfashitigong ROW_NUMBER() / RANK() hanshu Oracle zhongkeyi使shiyongbiaozhunfangfa8ibanbenyishangyekeyi使shiyongfeibiaozhunde ROWNUM MS SQL Server zezai 2005 banbenzhongtigongle ROW_NUMBER() hanshudanzai MySQL zhongsihuhuanmeiyouzheyangdexitongzidaigongnengsuiran LIMIT keyihenfang便biandeduifanhuidejieguojishuliangheweizhijinxingguolvdanguolvchulaidejiludexinghaoquemeibanfabei SELECT daojushuo MySQL shizaojiuxiangzengjiazhegegongnengledanwoshihuanmeizhaodao

  jiejuefangfashitongguoyudingyiyonghubianlianglaishixian

  set @mycnt = 0;

  select (@mycnt := @mycnt + 1) as ROWNUM , othercol from tblname order by othercol;

  zheyangchaxunchulaidejieguojizhong ROWNUM jiubaocunlexingbianhaoxinxizhegexingbianhaoxinxidemouzhongyongtuzaiyudangnixuyaogenjuxuyaoduishujuanzhaomouzhongguizepaixubingquchupaixuzhihoudemouyixingshujubingqiexiwangzhidaozhexingshujuzaizhiqianpaixuzhongdeweizhishijiuyongdezhelebiru

  set @mycnt = 0;

  select * from (

  select (@mycnt := @mycnt + 1) as ROWNUM , othercol

  from tblname order by othercol

  ) as A where othercol=OneKeyID;

  dangranniyekeyitongguochuangjianlinshibiaodefangfabachaxunjieguoxiedaomougeyongyou auto_increment ziduandelinshibiaozhongzaizuochaxundankaolvdaolinshibiaozai MySQL master / slave moshixiakenengchanshengdewentiyongzheyanglinshiyonghudingyibianliangdefangshilaijisuanchaxunjieguojimeiyixingduiyingdexinghaohuanshigengweijianjie -- chufeiniyuanyizai PHP huoqitayuyanjiaobenzhongduifanhuidezhenggejieguojizaizuochuli原文
 
 
如果需要在查询语句返回的列中包含一列表示该条记录在整个结果集中的行号, 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; 当然你也可以通过创建临时表的方法把查询结果写到某个拥有 auto_increment 字段的临时表中再做查询,但考虑到临时表在 MySQL master / slave 模式下可能产生的问题,用这样临时用户定义变量的方式来计算查询结果集每一行对应的行号还是更为简洁 -- 除非你愿意在 PHP 或其他语言脚本中对返回的整个结果集再作处理。
󰈣󰈤
日版宠物情人插曲《Winding Road》歌词

日版宠物情人2017的插曲,很带节奏感,日语的,女生唱的。 最后听见是在第8集的时候女主手割伤了,然后男主用嘴帮她吸了一下,插曲就出来了。 歌手:Def...

兄弟共妻,我成了他们夜里的美食

老钟家的两个儿子很特别,就是跟其他的人不太一样,魔一般的执着。兄弟俩都到了要结婚的年龄了,不管自家老爹怎么磨破嘴皮子,兄弟俩说不娶就不娶,老父母为兄弟两操碎了心...

网络安全治理:国家安全保障的主要方向是打击犯罪,而不是处置和惩罚受害者

来源:中国青年报 新的攻击方法不断涌现,黑客几乎永远占据网络攻击的上风,我们不可能通过技术手段杜绝网络攻击。国家安全保障的主要方向是打击犯罪,而不是处置和惩罚...

 
 
 
>>返回首页<<
 为你推荐
 
 
 
 转载本文
 UBB代码 HTML代码
复制到剪贴板...
 
 
 热帖排行
 
纯美的她_仔婷
苏州河畔_秀气女生
痞子的甘南日记
疑是银河落九天
 
 
王朝网络微信公众号
微信扫码关注本站公众号wangchaonetcn
 
  免责声明:本文仅代表作者个人观点,与王朝网络无关。王朝网络登载此文出于传递更多信息之目的,并不意味着赞同其观点或证实其描述,其原创性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容、文字的真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
 
©2005- 王朝网络 版权所有