`

定义一个变量代替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开始


分享到:
评论

相关推荐

    ROWNUM的使用技巧

    ROWNUM 是 Oracle 中的一种伪列,它可以根据返回记录生成一个序列化的数字。利用 ROWNUM,我们可以生产一些原先难以实现的结果输出,但是因为它是伪列的特殊性,在使用时需要注意一些事项,以免掉入“陷阱”。 特殊...

    对于 Oracle 的 rownum 问题

    因为ROWNUM是对结果集加的一个伪列,即先查到结果集之后再加上去的一个列 (强调:先要有结果集)。简单的说 rownum 是对符合条件结果的序列号。它总是从1开始排起的。所以你选出的结果不可能没有1,而有其他大于1的值...

    ORACLE 中ROWNUM用法总结

    在Oracle数据库中,`ROWNUM`是一个非常有用的伪列,用于限制查询结果的行数,尤其是在处理大数据量或进行分页查询时。然而,`ROWNUM`的使用并不直观,尤其是当涉及到比较运算符(如`>`, `>=`, `=`等)时,容易引发...

    rownum用法(不使用minus)

    `rownum` 是 Oracle 数据库中的一个特殊字段,主要用于给查询结果集中的每一行分配一个唯一的序号,该序号从 1 开始递增。`rownum` 的主要用途之一是用于实现分页查询,即控制查询结果的数量。 #### 二、rownum与...

    oracle rownum和distinct

    Oracle 中的 ROWNUM 和 DISTINCT 是两个非常重要的关键词,它们在查询数据时发挥着至关重要的作用。然而,许多开发者在使用这两个关键词时,却常常会遇到一些不太理解的地方,例如,当 DISTINCT 和 ROWNUM 一起使用...

    mysql实现rownum和上一条,下一条功能

    1.或许有的人会用id+limit来实现上一条,下一条功能.但是.我们试想一下.有的业务并不是用id来排序的.那这样的方法就没效果了. 2.现在找到了生成rownum的方法,并且优化了执行速度. 3.直接上我项目里的sql,希望对大家...

    oracle rownum 学习

    ROWNUM是一个伪字段,不能以任何表的名称作为前缀。下面是对ROWNUM的详细讲解: 一、ROWNUM的基本用法 ROWNUM是一个伪字段,用于限制查询返回的总行数。它可以用于限制查询返回的第一行记录,例如: ```sql SELECT...

    oracle中利用关键字rownum查询前20名员工信息及rownum用法

    注意:对 rownum(伪列) 只能使用 < 或 <=, 而用 =, >, >= 都将不能返回任何数据  例:查询工资前20名的员工姓名,工资 ,工资由高到低 Select rownum,first_name,salary from (Select first_name, salary ...

    oracle的rownum用法

    Oracle的`ROWNUM`是一个伪列,它在查询结果集中自动添加,并从1开始为每一行赋予一个唯一的数字。在处理大数据集时,`ROWNUM`常用于限制返回的行数,实现分页或者筛选特定范围的记录。然而,正确理解和使用`ROWNUM`...

    伪列(pseudo column)ROWNUM介绍

    在Oracle数据库中,`ROWNUM`是一个非常有用的伪列(也被称为虚拟列),它为每一行分配了一个唯一的行号。该行号从1开始递增,但请注意,`ROWNUM`并不是表的一部分,也不会存储在表中;相反,它是在查询执行过程中...

    Oracle中rownum的使用

    Oracle中rownum的使用

    oracle rownum 的使用 和sqlserver有区别的!

    在数据库操作中,ROWNUM 是一个非常重要的伪列,主要用于返回查询结果的行序号。它在 Oracle 数据库中有着广泛的应用场景,尤其是在需要对查询结果进行分页显示、排序或者统计特定范围内的记录时尤为重要。本文将...

    关于oracle的rownum

    Oracle 的 ROWNUM 伪列是一个非常重要的概念,它对结果集加的一个伪列,即先查到结果集之后再加上去的一个列。了解 ROWNUM 的意义是非常重要的,否则可能会出现莫名其妙的结果。 ROWNUM 的特点是从 1 开始排起的...

    oracle-rownum用法

    如果想找到从第二行记录以后的记录,使用 `ROWNUM>2` 是查不出记录的,原因是 ROWNUM 是一个总是从 1 开始的伪列,Oracle 认为 `ROWNUM> n`(n>1 的自然数)这种条件不成立。解决方法是使用子查询,例如: ```sql ...

    解析oracle的rownum

    Oracle 中的 ROWNUM 是一个伪列,用于对查询返回的行进行编号,返回的第一行分配的是 1,第二行是 2,以此类推。这个伪列可以用于限制查询返回的总行数。下面我们将通过实例来详细解析 ROWNUM 的使用方法和技巧。 ...

    rowid与rownum区别

    ORACLE 中ROWNUM用法总结!数据库管理员及程序开发员必看。

    Oracle rownum.docx

    Oracle的ROWNUM是一个非常重要的概念,它在数据库查询中起到限制返回结果数量和进行特定行选择的作用。ROWNUM是一个伪列,表示从查询结果中返回的每一行的序列号,从1开始递增。 首先,当使用ROWNUM等于某个特定值...

    oracle_SQL中rowid与rownum的使用

    `ROWNUM`是Oracle中的一个内置函数,它返回一个行号,表示当前行在查询结果集中的位置。其特点如下: 1. **动态生成**:`ROWNUM`是在查询执行时动态生成的,从1开始递增。 2. **限制结果**:可以结合`WHERE`子句,...

    C# Mysql 查询 Rownum的解决方法

    在提供的示例代码中,使用了一个用户定义的变量`@rownum`来计算行号。以下是具体的SQL查询语句: ```sql SELECT @rownum:=@rownum+1 AS rownum, a.order_id, case when a.Ordered =1 then '已分单' end as ...

    sql绑定变量

    在提供的部分内容中,可以看到一个Oracle存储过程`get_risk_to_match`的例子,该过程接收多个输入参数,包括`in_match_type`、`in_rownum`和`in_by_priority`,并返回一个游标结果集。过程中大量使用了绑定变量来...

Global site tag (gtag.js) - Google Analytics