`

定义一个变量代替rownum

阅读更多
转自ystyaoshengting的专栏

在查询数据库的时候,我们有时候需要对查询出来的数据加上序列,1,2,3,……n

例如:我们根据表的某个字段排序后,要对这些数据加上序列,这个时候序号常常不是我们建表时设置好的自增的主键id,怎么办呢????

可能我们会用变量来解决,如下

set @rownum=0;

SELECT @rownum:=@rownum+1 as rownum, table_name.*
FROM  table_name


如果在数据库中要用一句SQL语句来实现,这又改怎么办呢????

oracle数据库有专门的rownum来解决伪序列问题,但是mysql却到目前为止还没有内置的函数等来解决此问题

这个问题也困扰了我一段时间,到各种论坛上发帖也没有能回答,最后在无意间找到了这种解决方法


SELECT @rownum:=@rownum+1 AS rownum, table_name.*
FROM (SELECT @rownum:=0) r, table_name

把rownum的设置初值放到了from 和需要查询的表的前面

原文来自“老鸟的大心脏”,在这里谢谢他。

希望能帮助更多需要帮助的人……

也希望更多的高手们提出更多的漂亮的方法……

也许有人也会用到存储过程来解决,那也是一个方法,我曾经也用过,但是后来不能用存储过程了,就悲剧了

转自ystyaoshengting的专栏
-------------------------------
这个方法的不好之处就是每次查询都要重新定义变量重新初始化值,所以要分页的时候

每页的每条记录都是从1开始


分享到:
评论

相关推荐

    单片机编程思想

    例如,在键盘驱动程序中,可以创建一个名为`KEY.H`的头文件,其中定义了如`Keyhit()`、`Keyscan()`等函数的原型,这些函数分别用来检测是否有按键被按下以及获取当前被按下的键值。 ##### .H文件的作用 1. **接口...

    ORACLE 合辑

    - 通过`NEXTVAL`获取序列的下一个值,通过`CURRVAL`获取上次获取的值。 - 示例:`SELECT sequence_name.NEXTVAL FROM DUAL;` **删除Sequence:** - 使用DROP SEQUENCE命令删除Sequence,释放其占用的资源。 **...

    Informix迁移至Oracle数据库的研究.pdf

    - Oracle数据库中,每个DML操作默认在一个隐式事务中,不需要像Informix那样显式声明“BEGIN WORK”。因此,迁移时需去除不必要的事务开始和结束语句。 3. **SQL语法差异**: - 游标的声明、使用和释放是Oracle和...

    Qt Creator 的安装和hello world 程序+其他程序的编写--不是一般的好

    my2 为我们新建对话框类的另一个对象,但是my2 我们还没有定义,所以 在widget.h 文件中添加相应代码,如下,先加入头文件,再加入my2 的定义语 句,这里我们将其放到private 里,因为一般的函数都放在public 里,而...

    SQL最佳实践

    使用绑定变量可以让多个查询共享同一个执行计划,从而节省资源。 ##### INSERT INTO 在执行大量插入操作时,应该考虑一次性插入多行数据而不是单次插入一行。这样可以减少网络往返次数,提高插入速度。例如: ```...

    DBA面试常见题目

    - **定义**: 绑定变量是在SQL语句中使用变量代替直接书写条件值的方式,实际查询时动态传入值。 - **优点**: 减少硬解析,降低CPU争用,节省共享池空间。 - **缺点**: 不支持直方图统计,SQL优化可能较为复杂。 **...

    网易Java程序员两轮面试 请问你能答对几个?

    Java中的枚举是一种特殊的类,用于定义一组固定的常量。枚举可以用来代替传统的int常量,提高代码的可读性和安全性。 Part 3: 在面试时,项目经验的介绍也很重要。可以按照项目的生命周期来介绍项目经验,并讨论...

    海量数据库解决方案_韩国_李华植

    3.1.4.3 查看用户定义的绑定变量122 3.1.5 开发者的作用123 3.2 执行计划的类型126 3.2.1 扫描的基本类型126 3.2.1.1 全表扫描127 3.2.1.2 rowid扫描132 3.2.1.3 索引扫描133 3.2.1.4 b-tree聚簇读取(cluster access...

    海量数据库解决方案_韩国_李华植_Part02

    3.1.4.3 查看用户定义的绑定变量122 3.1.5 开发者的作用123 3.2 执行计划的类型126 3.2.1 扫描的基本类型126 3.2.1.1 全表扫描127 3.2.1.2 rowid扫描132 3.2.1.3 索引扫描133 3.2.1.4 b-tree聚簇读取(cluster access...

Global site tag (gtag.js) - Google Analytics