2我正在尝试在基于连接的订单中执行一种 os 子排序。
SELECT
w.*
FROM
[dbo].[Scores] AS w
JOIN @ScoresTable AS s on s.AreaId = w.AreaId
WHERE
[Id] = @Id
ORDER BY
w.Score -- this is where the problem is
ScoresTable
是一个具有特定顺序的表变量,因此我从 w 中选择的数据基于其 AreaId 顺序。
然后我要做的是根据w.Score
列对这些结果进行排序,但这似乎只是“覆盖”了我从JOIN
子句中(正确地)获得的顺序。
如何在添加Score
订单的同时仍然尊重AreaId
基于JOIN
?
我试过使用:
ORDER BY
s.AreaId, w.Score
JOIN 会根据以下顺序产生正确的顺序@ScoresTable.AreaId
:
AreaId
5
3
6
如果没有 ORDER BY 子句,我会得到这个(AreaId 是按要求排序的):
Id Score WheId AreaId ContextId
25 25 2 5 1
26 50 2 5 2
27 2 2 5 3
28 10 2 5 4
29 5 2 5 5
39 1 2 3 11
40 30 2 6 12
我现在要做的就是在 Score 列上排序以获得这个结果集(AreaId 按要求排序并按 Score 排序):
Id Score WheId AreaId ContextId
27 2 2 5 3
29 5 2 5 5
28 10 2 5 4
25 25 2 5 1
26 50 2 5 2
39 1 2 3 11
40 30 2 6 12