Red*_*pia 3 sql sql-server sql-order-by analytic-functions sql-server-2008
无论我在ORDER BY子句中放置什么,结果集的顺序都不会改变.
WITH Results AS (
SELECT DISTINCT
MessageThreadUsers.threadFK,
MessageThreads.threadDate,
Messages.MessageBody,
Messages.senderFK,
Users.userFullName AS senderFullName,
ROW_NUMBER() OVER (ORDER BY MessageThreads.threadDate DESC) AS RowNumber
FROM MessageThreadUsers
JOIN MessageThreads ON MessageThreadUsers.threadFK = MessageThreads.threadID
JOIN Messages ON MessageThreads.threadDate = Messages.messageDate
JOIN Users ON Messages.senderFK = Users.userID
WHERE userFK = 'usr_developer'
)
SELECT * FROM Results WHERE RowNumber BETWEEN 1 AND 10
Run Code Online (Sandbox Code Playgroud)
ORDER BY仅在将应用于最外层SELECT语句时控制返回行的顺序.
这可能会更好:
WITH Results AS (
SELECT DISTINCT
MessageThreadUsers.threadFK,
MessageThreads.threadDate,
Messages.MessageBody,
Messages.senderFK,
Users.userFullName AS senderFullName,
ROW_NUMBER() OVER (ORDER BY MessageThreads.threadDate DESC) AS RowNumber
FROM MessageThreadUsers
JOIN MessageThreads ON MessageThreadUsers.threadFK = MessageThreads.threadID
JOIN Messages ON MessageThreads.threadDate = Messages.messageDate
JOIN Users ON Messages.senderFK = Users.userID
WHERE userFK = 'usr_developer'
)
SELECT * FROM Results WHERE RowNumber BETWEEN 1 AND 10
ORDER BY RowNumber
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
43097 次 |
| 最近记录: |