为什么以下两个查询返回相同的结果?
SELECT FIRST(score) FROM (SELECT score FROM scores ORDER BY score ASC)
SELECT FIRST(score) FROM (SELECT score FROM scores ORDER BY score DESC)
考虑到我手动指定子查询的顺序,这很令人困惑。
最佳答案
子查询中结果的顺序是无关紧要的,除非您在子查询中使用了TOP(在此不使用)。大多数SQL变体都不允许这种语法,例如,在子查询中使用ORDER BY会在SQL Server中引发错误。
您的顶级查询没有ORDER BY,因此FIRST或TOP 1的概念在该查询的上下文中未定义。
Microsoft在reference docs中指出(强调我的意思):
因为记录通常不按特定顺序返回(除非
查询包含一个ORDER BY子句),这些查询返回的记录
函数将是任意的。