查询1:
SELECT
ROW_NUMBER() OVER(PARTITION BY C_CallID ORDER BY DATETIME) ROWNUMBER
,CallID
,C_CALLID
,NAME
,DATETIME
FROM
TABLENAME
ORDER BY DATETIME
查询2:
SELECT
ROW_NUMBER() OVER(PARTITION BY C_CallID ORDER BY DATETIME, ASC NAME DESC) ROWNUMBER
,CallID
,C_CALLID
,NAME
,DATETIME
FROM
TABLENAME
ORDER BY DATETIME ASC, NAME DESC
查询1输出:
查询2输出:
因此,我的理解是,行号将基于所有记录的DATETIME
ASC
进行排序,然后NAME
列记录的排序将为DESC
。
我的问题是“第二次排序会影响第一次排序的数据吗?”
1条答案
按热度按时间pod7payv1#
用一个简单的例子来解释总是比较容易的。
考虑以下数据:
和以下查询:
两个查询的结果都是A为升序,但第一个查询的结果也是B为升序,而第二个查询的结果是B为降序-因此第二次排序不会以任何方式影响第一次排序。仅当主排序返回该列中具有相等值的多个行时,辅助排序才会生效。
当然,即使您有一个包含两列以上的order by子句,该规则也适用。