First()函数使用什么顺序?

Jof*_*sey 5 sql ms-access ms-access-2007

为什么以下两个查询返回相同的结果?

SELECT FIRST(score) FROM (SELECT score FROM scores ORDER BY score ASC)
SELECT FIRST(score) FROM (SELECT score FROM scores ORDER BY score DESC)
Run Code Online (Sandbox Code Playgroud)

考虑到我手动指定子查询的顺序,这很令人困惑.

Exa*_*Box 3

子查询中结果的顺序无关紧要,除非您在子查询中使用 TOP(此处不使用)。大多数 SQL 变体不允许这种语法——例如,在子查询中使用 ORDER BY 会在 SQL Server 中引发错误。

您的顶级查询没有 ORDER BY,因此 FIRST 或 TOP 1 的概念在查询的上下文中未定义。

参考文档中,微软指出(强调我的):

由于记录通常不按特定顺序返回(除非查询包含 ORDER BY 子句),因此这些函数返回的记录将是任意的