mysql中set @rowNum=0实现查询记录的行号

这个问题源于SF上的一个问题:

字段
id,shares // 分享次数
记录
1, 2
2, 0
3, 1
4, 0,
5, 1

需求 计算某条记录的分享排行

假设计算id 2 的分享排行 则是4

sql 能算出某条记录的 分享排行吗?

 
SQLServer提供了ROW_NUMBER()函数可以实现。

但是mysql没有提供类似的函数,网上查了点资料,可以利用预定义变量解决。

实验数据:

mysql有点麻烦,给一下思路,数据表如下:

mysql没有像sql server一样提供记录行数的函数,但可以用预定义变量实现:

全部排名之后,可以查询特定的一条记录的排名

时间: 2024-10-26 05:18:43

mysql中set @rowNum=0实现查询记录的行号的相关文章

oracle10g-在查询结果列中添加rownum列,查询出的条数增多

问题描述 在查询结果列中添加rownum列,查询出的条数增多 sql语句结构 select rownum as tempNum, ..... from (select ..... where.... order by AD.detailaddressstr, CUSTOMEREN.CUSTOMERADDRSTR) temp where (case when ... then ...else end); 如果查询结果列中有rownum,查询出的数据会比不添加rownum的结果列多出很多. Orac

浅谈mysql中多表不关联查询的实现方法_Mysql

大家在使用MySQL查询时正常是直接一个表的查询,要不然也就是多表的关联查询,使用到了左联结(left join).右联结(right join).内联结(inner join).外联结(outer join).这种都是两个表之间有一定关联,也就是我们常常说的有一个外键对应关系,可以使用到 a.id = b.aId这种语句去写的关系了.这种是大家常常使用的,可是有时候我们会需要去同时查询两个或者是多个表的时候,这些表又是没有互相关联的,比如要查user表和user_history表中的某一些数据

Sql server 数据库中,纯SQL语句查询、执行 单引号问题。

原文:Sql server 数据库中,纯SQL语句查询.执行 单引号问题. 在默认值情况下, select 'abc',Titile from tb_Name;  ---输出内容 是abc: 如果想输出 单引号 'abc,需要使用select '''abc',Titile from tb_Name; ---这里用三个单引号'''abc: select '''abc''',Title from tbName;   输出内容是'abc':两边带有单引号: 谨记:如果字符串包含单引号,则需要在单引号前

利用ROW_NUMBER() OVER函数给SQL数据库中每一条记录分配行号的方法

从SQL Server 2005开始,增加了一个新的函数Row_Number(),他的一个很伟大的作用就是可以在数据表中添加一列从1开始的行号,这样大大代替所有多余的代码来产生行号.下面就教大家如何使用Row_Number()函数. 假设数据库中有如下表: 复制代码 代码如下: id    name 1    aa 3    bb 4    cc 执行如下SQL语句后将得到如下结果: SELECT ROW_NUMBER() OVER(ORDER BY id) as rowNum,* FROM 表

MYSQL中获取得最后一条记录的语句_Mysql

在MySQL中,使用auto_increment类型的id字段作为表的主键,并用它作为其他表的外键,形成"主从表结构",这是数据库设计中常见的用法.但是在具体生成id的时候,我们的操作顺序一般是:先在主表中插入记录,然后获得自动生成的id,以它为基础插入从表的记录.这里面有个困难,就是插入主表记录后,如何获得它对应的id.通常的做法,是通过"select max(id) from tablename"的做法,但是显然这种做法需要考虑并发的情况,需要在事务中对主表加以

python中使用sys模板和logging模块获取行号和函数名的方法_python

对于python,这几天一直有两个问题在困扰我:1.python中没办法直接取得当前的行号和函数名.这是有人在论坛里提出的问题,底下一群人只是在猜测python为什么不像__file__一样提供__line__和__func__,但是却最终也没有找到解决方案.2.如果一个函数在不知道自己名字的情况下,怎么才能递归调用自己.这是我一个同事问我的,其实也是获取函数名,但是当时也是回答不出来. 但是今晚!所有的问题都有了答案.一切还要从我用python的logging模块说起,logging中的for

mysql中提高Order by语句查询效率的两个思路分析_Mysql

因为可能需要对数据库的记录进行重新排序.在这篇文章中,笔者就谈谈提高Order By语句查询效率的两个思路,以供大家参考. 在MySQL数据库中,Order by语句的使用频率是比较高的.但是众所周知,在使用这个语句时,往往会降低数据查询的性能.因为可能需要对数据库的记录进行重新排序.在这篇文章中,笔者就谈谈提高Order By语句查询效率的两个思路,以供大家参考. 498)this.width=498;" border=0>  一.建议使用一个索引来满足Order By子句. 在条件允许

MySQL中给自定义的字段查询结果添加排名的方法_Mysql

 我正在用 MySQL 客户端的时候,突然想到如果可以给查询结果添加排名该多好啊,然后就找到了一个简单的解决办法. 下面是一个示例表的数据:  然后我们要根据 Roll_No 字段进行排序并给出排名,我们首先必须定义一个初始值为0的变量,然后在查询结果中使用这个变量. 如下面的代码:   SET @counter=0; SELECT @counter:=@counter+1 AS Rank,LastName,Roll_no as Roll FROM Students ORDER BY Roll_

MySQL中case when 语句条件查询的方法

case 计算条件列表并返回多个可能结果表达式之一. case 具有两种格式: 简单 case 函数将某个表达式与一组简单表达式进行比较以确定结果. case 搜索函数计算一组布尔表达式以确定结果. 两种格式都支持可选的 else 参数. 语法 简单 case 函数: case input_expression     when when_expression then result_expression         [ ...n ]     [         else else_resu