栏目导航
热点推荐
- 实例讲解在MySQL中如何导出整个
- MYSQL教程:my.cnf缓存优化
- Windows下MySQL安全权限设置方法
- mysql基础教程:安装与操作
- MySQL数据库在Linux下二进制日志
- 分析与比较五种MySQL数据库可靠
- 如何修复MySQL数据库表
- 教你配置安全稳定的SQL Server数
- 提高MYSQL查询效率的三个有效的
- 修改MySQL的默认密码的方法
- 如何修改MySQL数据库表中的数据
- 开源数据库MySQL优化秘籍
阅览排行
如何在MySQL查询结果集中得到记录行号
www.jz123.cn 2009-08-21 来源: 中国建站 责任编辑(袁袁) 我要投递新闻
解决方法是通过预定义用户变量来实现:
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 或其他语言脚本中对返回的整个结果集再作处理。
0
上一篇:实例讲解在MySQL中如何导出整个数据库 下一篇:修改Linux下MySQL 5.0的默认连接数