我在AdventureWorks2016上执行了两个示例查询,并给了我相同的结果。 我什么时候应该使用NEXT或FIRST关键字?
select LastName + ' ' + FirstName
from person.person
order by LastName asc OFFSET 10 rows **Fetch next** 10 rows only
select LastName + ' ' + FirstName
from person.person
order by LastName asc OFFSET 10 rows **Fetch first** 10 rows only
答案 0 :(得分:3)
FETCH FIRST
和FETCH NEXT
做同样的事情。之所以存在,是因为前面的OFFSET
子句。使用FIRST
和OFFSET
这两个词可能让人类读者感到困惑:
SELECT *
FROM Foo
ORDER BY ID
OFFSET 5 ROWS
FETCH FIRST 5 ROWS ONLY; -- Does this mean rows 6 to 10, or 1 to 5?
鉴于:
SELECT *
FROM Foo
ORDER BY ID
OFFSET 5 ROWS
FETCH NEXT 5 ROWS ONLY; -- Now it's clear!
答案 1 :(得分:2)
没有区别。 SQL标准只允许两者,可能弥合语法之间的差异,或允许您选择编写“流利的英语”查询。
这类似于标准允许你写的原因:
fetch first row
fetch first rows
fetch first 1 row
fetch first 1 rows
(以及next
的变体)将获取单行。这也允许你写出语法不正确的句子,如fetch first 2 row
被视为理所当然。