当前位置: 首页 > 面试题库 >

在MySQL中通过分区排名()

王彭薄
2023-03-14
问题内容

我完全为在mysql中从rank()over(按x分区,按y desc排序)创建新列“ LoginRank”而感到困惑。

从SQL Server,我将编写以下查询,以创建按“登录”分组并按“ id”排序的“ Loginrank”列。

select ds.id, 
       ds.login, 
       rank() over(partition by ds.login order by ds.id asc) as LoginRank
from tablename.ds

我有下表。

create table ds (id int(11), login int(11))
insert into ds (id, login) 
values  (1,1),
    (2,1),
    (3,1),
    (4,2),
    (5,2),
    (6,6),
    (7,6),
    (8,1)

我尝试将许多现有的mysql修复程序应用到我的数据集,但仍然存在问题。

任何帮助是极大的赞赏。谢谢!


问题答案:

请尝试以下查询:-MySql不支持Rank()函数。

select result.id,result.login,result.rank from (
  SELECT    id,
              login,
              IF(login=@last,@curRank:=@curRank,@curRank:=@_sequence) AS rank,
              @_sequence:=@_sequence+1,
              @last:=login
    FROM      ds , (SELECT @curRank := 1, @_sequence:=1, @last:=0) r
    ORDER BY  id asc) as result;

希望对您有帮助!



 类似资料:
  • 问题内容: MySQL中是否有任何支持区分大小写的排序规则类型。我在MySQL中使用了所有类型的排序规则,它们的名称末尾都带有_ci,因此它们是不区分大小写的排序规则。 问题答案: 根据MySQL手册http://dev.mysql.com/doc/refman/5.0/en/charset- mysql.html, 您应该能够将排序规则设置为区分大小写。您可以通过执行查询来获取归类列表 经过一点

  • 问题内容: 我有一个带有产品的mysql表。 这些产品具有类别ID和名称。 我想做的是按类别ID顺序降序排列,然后按产品名称升序排列。 我想要的是 不幸的是,这是行不通的。 甚至可以在mysql中定义第二个排序列的排序顺序吗? 问题答案: 您可以通过以下方式进行操作: 看看优化

  • 问题内容: 所以我有一张桌子,如下所示: 然后,我需要对它们进行分组,排序和排序以给出: 现在,我知道您可以使用temp变量进行排名,例如此处,但是如何对分组集进行排名呢?感谢您的见解! 问题答案: 这以非常简单的方式起作用: 初始查询按第一,第二顺序排序。 并初始化为 用于测试是否输入下一组。如果的先前值(存储在中)不等于当前值(存储在中),则将其清零。否则增加。 分配了新值,并将在下一行的第3

  • 问题内容: 我将以下查询与MySQL 5.5(或早期版本)一起使用了多年,没有任何问题: 结果的顺序总是按照我的需要降序。 上周,我刚刚迁移到新的MySQL版本(实际上,我迁移到了MariaDB 10.0.14),现在具有相同数据库的相同查询不再按降序排序。它以升序排序(或使用自然顺序排序,实际上不确定)。 因此,有人可以告诉我这是一个错误还是这是最新版本的MySQL / MariaDB中行为的改

  • 问题内容: 我有这个存储过程。例如,如何间隔5秒运行一次?像删除时间戳超过一天的数据的例程一样? 问题答案: 您可以使用mysql Scheduler每5秒运行一次。您可以在以下网址找到示例:http://dev.mysql.com/doc/refman/5.1/en/create- event.html 从未使用过它,但我希望它能起作用:

  • 问题内容: 我有一个MySQL查询,该查询选择表中得分最高的3名球员,然后创建一个额外的列,为他们分配排名: 目前的进展 因此,如果表如下所示: 查询的结果将是这样的: 问题 如何更改此查询,使其在结果列表中也显示用户及其排名?例如,如果我如何返回: 编辑:我应该提到-我正在使用MySQL 5.0.96版 问题答案: 对于8.0之前的版本… https://www.db-fiddle.com/f/