问题标签 [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.
sql - 是否应将 SQL 排名功能视为“谨慎使用”
这个问题源于关于在特定情况下是否使用 SQL 排名功能的讨论。
任何常见的 RDBMS 都包含一些排名功能,即它的查询语言具有像TOP n ... ORDER BY key
、ROW_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
您会发现许多建议使用排名功能的解决方案,而错过指出可能存在的问题。
问题:如果提出包含排名功能的解决方案,应该给出什么建议?
sql - SQL Server 2005 - Row_Number()
我试图了解在我的查询中对最外层选择使用 DISITINCT 时使用 row_number() 函数按降序排序结果时看到的异常行为,如下所示:
当最外面的 DISTINCT 被取出时,降序是可以的,但是当它被包含时,结果不会以降序显示。
sql-server - 一次迭代 1 行,包含大量链接/连接
好的,基本上需要的是一种在使用大量连接的同时获得行号的方法,并且在 where 子句中使用这些行号。
比如类似的东西
但是,需要为该表上的此查询生成 ROWNUMBER。因此,如果我们想访问第二个 WORKHISTORY 记录的地址,我们可以直接去WORKHISTORY.ROWNUMBER=2
,如果说我们有两个匹配的地址,我们可以使用ADDRESS.ROWNUMBER=1
和循环遍历一个 WORKHISTORY 记录的地址ADDRESS.ROWNUMBER=2
这应该能够成为自动生成的查询。因此,为了到达相关表,可能有超过 10 个内部连接,并且我们需要能够独立于其余表循环遍历每个表的记录。
我知道有 RANK 和 ROWNUMBER 函数,但由于所有内部连接,我看不到它对我的工作方式
注意:在这个示例查询中,ROWNUMBER 应该是自动生成的!它永远不应该存储在实际表中
postgresql - 在 Postgres 中结合 row_number() 和字符串列
我需要将一个字符串列和row_number()
计算结果合并为一列。
我得到的是第 1 列,包含字符串和第 2 列,包含row_number()
结果。现在我将两者合二为一。
这在 Postgres 中是怎样的?我想,一个简单的+
还是&
行不通的。
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 的任何其他点?
reporting-services - SSRS 行组 + 列组 = 行号问题
我回来了另一个SSRS问题:-)
我正在处理调查数据。我有一个程序可以返回组织的每个问题的响应计数。所以我的报告被定义为行的组织组和列的答案组。组织的数量和答案都是可变的。这按预期工作。我尝试在组织旁边添加一个 RowCount 以便我可以显示排名,但是每个组织每个问题都有一行的事实意味着我每个组织得到八行。
这是一个例子:
这是我的报告定义:
排名表达式目前是:=RowNumber(Nothing)
理想情况下,排名将是 1、2、3、4 等...我已经尝试了行组、列组的范围,什么都没有。没有帮助。
任何帮助将不胜感激!
sql - 查询输出中的行号
我在表中有一个数字字段(比如 num)和 pkey。
现在我如何在我有 pkey 的特定行的查询输出中获取行号。
我正在使用 sql 2000。
mysql - MySQL 中的 ROW_NUMBER()
MySQL 中是否有一种复制 SQL Server 功能的好方法ROW_NUMBER()
?
例如:
然后,例如,我可以添加一个限制为 1 的条件,以获得每对intRow
最高的单行。col3
(col1, col2)
nhibernate - ROW_NUMBER() 和 nhibernate - 查找项目的页面
给定一个 ICriteria 对象形式的查询,我想使用 NHibernate(通过投影?)来查找元素的顺序,其方式等同于使用
在查询中查找特定项目的索引。(我需要这个用于分页中的“跳转到页面”功能)有什么建议吗?
注意:我还不想转到一个给定编号的页面-我知道该怎么做-我想获取该项目的索引,以便可以将其除以页面大小并获取页面索引。