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

MySQL中的ROW_NUMBER()

荆修明
2023-03-14
问题内容

MySQL中有没有复制SQL Server函数的好方法ROW_NUMBER()

例如:

SELECT 
    col1, col2, 
    ROW_NUMBER() OVER (PARTITION BY col1, col2 ORDER BY col3 DESC) AS intRow
FROM Table1

然后,例如,我可以添加一个条件以将限制限制intRow为1,以获得col3(col1, col2)对最高的一行。


问题答案:

我想要每对(col1,col2)对具有最高col3的行。

这是一个按组的最大值,是最常提出的SQL问题之一(因为它看起来应该很容易,但实际上并非如此)。

我经常为null-self-join充实:

SELECT t0.col3
FROM table AS t0
LEFT JOIN table AS t1 ON t0.col1=t1.col1 AND t0.col2=t1.col2 AND t1.col3>t0.col3
WHERE t1.col1 IS NULL;

“获取表中没有匹配col1,col2的其他行具有更高col3的行。”
(您会注意到这一点,并且如果多行具有相同的col1,col2,col3,则大多数其他按组最大的解决方案将返回多行。如果这是一个问题,则可能需要一些后处理。)



 类似资料:
  • 问题内容: 最近,我对PostgreSQL(使用8.2)非常熟悉,发现date_trunc函数对于轻松匹配某些天/月/等之间的时间戳非常有用。我认为,该功能的真正有用之处在于它可以将输出保持为时间戳格式。 我不得不切换到mySQL(5.0)并找到一些日期功能,而这些功能在比较中是比较缺乏的。提取函数似乎很有用,我发现的日期函数解决了我的一些问题,但是有没有办法复制PostgreSQL的date_t

  • 问题内容: 我需要使用以下查询创建group by子句: 但我想在左边的一栏返回我:1、2、3、4、5等。在MSSql中我会做 这可能吗? 问题答案:

  • 问题内容: 当我尝试使用我的IP地址登录mysql时出现错误1130 qht,我可以这样做吗 问题答案: 不允许您的客户端IP连接到该服务器,必须将其添加到允许的客户端帐户。例如,假设您在一个数据库中添加了具有所有权限的用户帐户: 其中db是数据库名称,username是username,而客户端IP是192.168.0.1 有关用户帐户创建的详细信息,请参阅文档

  • 问题内容: 我经常看到人们在使用定界符。我试图找出什么是分隔符,以及它们的目的是什么。谷歌搜索20分钟后,我找不到能满足我要求的答案。所以,我现在的问题是:什么是分隔符,何时应使用它们? 问题答案: 在定义函数,存储过程和触发器(其中必须定义多个语句)时,通常使用默认值以外的分隔符 。您可以定义一个不同的定界符,例如,该定界符用于定义整个过程的结尾,但是在其中,每个单独的语句均以终止。这样,当代码

  • 问题内容: 我想从一个表中选择一个Blob col,base64对其进行编码,然后将其插入到另一个表中。有什么方法可以在不将数据往返数据库和通过我的应用程序往返的情况下进行此操作? 问题答案: 我一直在寻找相同的东西,但我刚刚看到MySQL 5.6有几个支持此功能的新字符串函数:TO_BASE64和FROM_BASE64。

  • 问题内容: 我们正在考虑将UUID值用作MySQL数据库的主键。所插入的数据是从数十台,数百台甚至数千台远程计算机生成的,并且以每秒100-40,000次插入的速度插入,我们将永远不会进行任何更新。 在我们开始选择数据之前,数据库本身通常会获得大约5000万条记录,因此不是庞大的数据库,但也不小。我们也计划在InnoDB上运行,但是如果我们有更好的引擎来进行我们的工作,我们愿意改变它。 我们已经准