SQL SERVER 的 SELECT TOP n
是否有符合 ANSI SQL 的版本?
最佳答案
ANSI/ISO SQL:2003 引入了窗口函数:
SELECT * FROM (
SELECT
ROW_NUMBER() OVER (ORDER BY age ASC) AS rownum,
person_id,
person_name,
age
FROM person
) AS foo
WHERE rownum <= 3
Microsoft SQL Server 2005 及更高版本支持此语法。 http://msdn.microsoft.com/en-us/library/ms189798(v=sql.90).aspx
ANSI/ISO SQL:2008 引入了更简单的 FETCH FIRST
语法,这可能更类似于 Microsoft/Sybase TOP
语法:
SELECT person_id, person_name, age FROM person
FETCH FIRST 3 ROWS ONLY
Microsoft SQL Server 2012 及更高版本支持此语法。 https://learn.microsoft.com/en-us/sql/t-sql/queries/select-order-by-clause-transact-sql?view=sql-server-2017#using-offset-and-fetch-to-limit-the-rows-returned
如果您仍在使用 Microsoft SQL Server 2000,您应该阅读我不久前发布的有关执行“分页”样式查询的问题: Emulate MySQL LIMIT clause in Microsoft SQL Server 2000
关于sql - SELECT TOP 1 的 ANSI SQL 版本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14804325/