问题标签 [row-number]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
5 回答
851 浏览

sql - 是否应将 SQL 排名功能视为“谨慎使用”

这个问题源于关于在特定情况下是否使用 SQL 排名功能的讨论。

任何常见的 RDBMS 都包含一些排名功能,即它的查询语言具有像TOP n ... ORDER BY keyROW_NUMBER() OVER (ORDER BY key)ORDER BY key LIMIT n(概览) 这样的元素。

如果您只想显示大量记录中的一小部分,它们在提高性能方面做得很好。但是它们也引入了一个主要的陷阱:如果key不是唯一的结果是不确定的。考虑以下示例:


查询应该返回最后登录的人:

正如预期George的那样,一切看起来都很好。但是随后将一条新记录插入到logins表中:

上面的查询现在返回什么?Ringo? George? 你说不出来。据我记得,例如 MySQL 4.1 返回物理创建的与条件匹配的第一条记录,即结果将是George. 但这可能因版本和 DBMS 而异。应该退回什么?有人可能会说Ringo,因为他显然是最后登录的,但这是纯粹的解释。在我看来,两者都应该被退回,因为您无法从可用数据中明确决定。

所以这个查询符合要求:

作为替代方案,一些 DBMS 提供了特殊功能(例如 Microsoft SQL Server 2005 引入TOP n WITH TIES ... ORDER BY key(由gbn建议),RANK以及DENSE_RANK为此目的)。


例如,如果您搜索 SO,ROW_NUMBER您会发现许多建议使用排名功能的解决方案,而错过指出可能存在的问题。

问题:如果提出包含排名功能的解决方案,应该给出什么建议?

0 投票
2 回答
1896 浏览

sql - SQL Server 2005 - Row_Number()

我试图了解在我的查询中对最外层选择使用 DISITINCT 时使用 row_number() 函数按降序排序结果时看到的异常行为,如下所示:

当最外面的 DISTINCT 被取出时,降序是可以的,但是当它被包含时,结果不会以降序显示。

0 投票
1 回答
336 浏览

sql-server - 一次迭代 1 行,包含大量链接/连接

好的,基本上需要的是一种在使用大量连接的同时获得行号的方法,并且在 where 子句中使用这些行号。

比如类似的东西

但是,需要为该表上的此查询生成 ROWNUMBER。因此,如果我们想访问第二个 WORKHISTORY 记录的地址,我们可以直接去WORKHISTORY.ROWNUMBER=2,如果说我们有两个匹配的地址,我们可以使用ADDRESS.ROWNUMBER=1和循环遍历一个 WORKHISTORY 记录的地址ADDRESS.ROWNUMBER=2

这应该能够成为自动生成的查询。因此,为了到达相关表,可能有超过 10 个内部连接,并且我们需要能够独立于其余表循环遍历每个表的记录。

我知道有 RANK 和 ROWNUMBER 函数,但由于所有内部连接,我看不到它对我的工作方式

注意:在这个示例查询中,ROWNUMBER 应该是自动生成的!它永远不应该存储在实际表中

0 投票
2 回答
605 浏览

sql-server-2005 - 使用 LINQ 返回所有其他记录

我有一个查询,它返回 10000 条用作地图上的绘图点的记录。为了减少负载并提高应用程序速度,我们正在尝试实现基本上相当于细节级别的逻辑。基本上,缩小时,显示 50% 的点。放大时,显示 100% 的点。

这最终是我需要最终 SQL 的样子:

在 LINQ 中,我可以使用 .Skip 和 .Take 来获取 Row_Number() Over 部分(例如此处),但是在执行此操作时,生成的 Where 条件使用“between”而不是“where RowNumber % 2 = 0”,我需要.

我正确地接近这个吗?为了获得我们在这里寻找的全部性能提升,这个排除确实需要在 SQL 服务器上发生。

0 投票
1 回答
1627 浏览

postgresql - 在 Postgres 中结合 row_number() 和字符串列

我需要将一个字符串列和row_number()计算结果合并为一列。

我得到的是第 1 列,包含字符串和第 2 列,包含row_number()结果。现在我将两者合二为一。

这在 Postgres 中是怎样的?我想,一个简单的+还是&行不通的。

0 投票
1 回答
713 浏览

sql-server-2005 - 合并:使用 SET ROWCOUNT 或 RowNumber() 的 SQL 2005+ 动态分页?

我有一个复杂的 SP,它应用了多个 JOIN 和查找以及复杂的过滤器,如逗号分隔值等......在它之上,我必须部署两个复杂但性能有效的功能:

1. 动态排序,但我认为它是有限的——你知道冗长/笨拙的 CASE 层次结构,奇怪的是专家们也同意这是我们唯一的“最佳”解决方案:

SQL 存储过程中的动态排序 http://www.sqlteam.com/forums/topic.asp?TOPIC_ID=5942

无论如何,我现在对这个期望不高。

2. 动态分页——即我希望 SP 能够从 Y(Y = 页码)开始只返回 X 条记录(X = 页大小)。我希望你有一个大致的想法。

为了更清楚,我想使用 MySQL 和 PostgreSQL 中可用的东西:

数据库:SQL 分页? http://www.sql.org/sql-database/postgresql/manual/queries-limit.html

奇怪的是,SQL 2005+ 中不提供如此简单和基本的功能......或者我错了(我很高兴听到它:-))


我知道两种适合我的性能\复杂性权衡的方法 -

[2.1] 使用 SQL 2005 的 'RowNumber()' 特性,然后应用过滤器:(我过去用过)

但同样,这需要创建一个临时表或使用 WITH 子句。这也在: SQL Server 中的行偏移量中进行了解释

[2.2] 我发现了一些新的方法。其中之一是使用

http://www.4guysfromrolla.com/webtech/042606-1.shtml

他们说总体 2.2 比 2.1 有效。是吗?另外,我想知道如果两个用户请求同时触发同一个 SP 两次会发生什么。我希望在同时的 SP 调用中“SET ROWCOUNT”不会被“共享”或“覆盖”。请确认。比较 2.1 和 2.2 的任何其他点?

0 投票
8 回答
40233 浏览

reporting-services - SSRS 行组 + 列组 = 行号问题

我回来了另一个SSRS问题:-)

我正在处理调查数据。我有一个程序可以返回组织的每个问题的响应计数。所以我的报告被定义为行的组织组和列的答案组。组织的数量和答案都是可变的。这按预期工作。我尝试在组织旁边添加一个 RowCount 以便我可以显示排名,但是每个组织每个问题都有一行的事实意味着我每个组织得到八行。

这是一个例子:
图表

这是我的报告定义:
图表
排名表达式目前是:=RowNumber(Nothing)

理想情况下,排名将是 1、2、3、4 等...我已经尝试了行组、列组的范围,什么都没有。没有帮助。

任何帮助将不胜感激!

0 投票
3 回答
365 浏览

sql - 查询输出中的行号

我在表中有一个数字字段(比如 num)和 pkey。

现在我如何在我有 pkey 的特定行的查询输出中获取行号。

我正在使用 sql 2000。

0 投票
25 回答
652976 浏览

mysql - MySQL 中的 ROW_NUMBER()

MySQL 中是否有一种复制 SQL Server 功能的好方法ROW_NUMBER()

例如:

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

0 投票
3 回答
5504 浏览

nhibernate - ROW_NUMBER() 和 nhibernate - 查找项目的页面

给定一个 ICriteria 对象形式的查询,我想使用 NHibernate(通过投影?)来查找元素的顺序,其方式等同于使用

在查询中查找特定项目的索引。(我需要这个用于分页中的“跳转到页面”功能)有什么建议吗?

注意:我还不想转到一个给定编号的页面-我知道该怎么做-我想获取该项目的索引,以便可以将其除以页面大小并获取页面索引。