【发布时间】:2017-06-13 13:12:29
【问题描述】:
我正在尝试在一个庞大的数据集上运行 ORDER BY 并生成密集排名值以根据密集排名提取不同的行数。后来,我在整个过程中使用密集排名值作为代理键继承中间结果并将其进一步用于一些性能测试。
我面临的问题:-
我遇到的问题是我将数据集从 Matrix(postgresql)(PRODUCTION environment) 迁移到 SQL Server(New environment) 并实现了密集秩函数。但是由于 SQL Server 和 Matrix 中的 ORDER BY 子句行为导致的密集排名结果不同,我无法进一步验证代码和结果。
测试示例:-
SELECT *,DENSE_RANK() OVER ( ORDER BY Col ) AS drnk FROM
(
SELECT '#2 Mayfair Terrace' AS Col
UNION
SELECT '#2 MYSTIC COURT' AS Col
)Z;
SQL Server 输出:-
Col drnk
#2 Mayfair Terrace 1
#2 MYSTIC COURT 2
矩阵(Postgresql)输出:-
Col drnk
#2 MYSTIC COURT 1
#2 Mayfair Terrace 2
谁能告诉我为什么两个不同的数据库环境之间的 ORDER BY 行为会有所不同?任何帮助,将不胜感激。谢谢。
【问题讨论】:
-
这是一个排序规则问题。
标签: sql sql-server postgresql sql-order-by dense-rank