我的查询是获取每个玩家的最高分和该会话耗用的时间。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