我的查詢是獲取每個玩家的最高分和該會話耗用的時間。SQL ORDER BY子查詢
在MySQL中,下面的查詢使用和工程
SELECT Playername as 'Player Name', HighScores.P1Score as 'Highest Score', TimeElapsed as 'Elapsed Time'
FROM
(gamerecord inner join playerprofile ON playerprofile.PID = gamerecord.PID),
(SELECT GID, PID, P1Score
FROM (SELECT GID, PID, P1Score
FROM gamerecord
ORDER BY 3 DESC) AS sortedtable
GROUP BY PID) AS HighScores
WHERE gamerecord.GID = Highscores.GID
現在,隨着MSSQL Server時,下面的錯誤被拋出。
的ORDER BY
子句是在視圖中,內聯函數,派生表,子查詢和公用表表達式無效,除非同時指定TOP
,OFFSET
或FOR XML
。
最內層查詢用於在GROUP BY操作之前對結果進行排序。據觀察,GROUP BY
的價值最高,因此通過排序,我確定最高值是最高分。
我怎樣才能使這與MSSQL的工作沒有被拋出的錯誤?
在第7行中,您不能使用'ORDER BY 3 DESC'。而不是'3',您必須使用有效的列名稱。 **編輯:**顯然,這是有效的語法(即使我沒有看到它的意義)。該錯誤必須在其他地方。 – 2015-02-08 14:02:19
在MySQL中,這是一個沒有記錄的解決方案(除非您計算手冊相關頁面的註釋部分)。你不能使用記錄的解決方案嗎? – Strawberry 2015-02-08 14:03:19
@Michael Wagner'ORDER BY 3 DESC'不是他期望的那樣,但它仍然是有效的語法。您只需按表達式排序,而不是僅列名。這不是錯誤的原因。 – 2015-02-08 14:05:23