SQL中Top和Limit关键字的区别

时间:2011-04-14 19:23:10

标签: sql

一个简短的问题。假设我有以下两个查询:

SELECT TOP 2 * FROM Persons;

SELECT * FROM Persons limit 2;

我想知道上述2个查询的执行区别? 基本上,我想知道何时应该使用limit关键字以及何时使用top关键字。 此外,数据库如何根据上述2个查询返回结果。

6 个答案:

答案 0 :(得分:55)

如果您使用的是TOP,请使用MySQLPostgres使用Limit

AFAIK目前没有产品支持这两种产品。 Here's one当前实施列表和here's another(涵盖更多产品,但不太详细)

答案 1 :(得分:28)

正如我对马丁史密斯上述答案的评论所述,有些产品同时支持LIMITTOP(正如您所见here)。不同之处在于TOP仅选择前n个记录,但LIMIT允许定义偏移量以检索特定范围的记录:

SELECT * FROM ... LIMIT 5 OFFSET 10

在跳过10条记录之后,此语句选择前5条记录,TOP不可能这样做。

我发布的示例仅针对上面链接的DBS进行了检查。由于时间不够,我没有检查SQL标准。

答案 2 :(得分:13)

TOP& LIMIT都适用于亚马逊Redshift

答案 3 :(得分:11)

limit适用于MySQL和PostgreSQL,top适用于SQL Server,rownum适用于Oracle。

答案 4 :(得分:4)

没有区别。 TOPLIMIT关键字的功能相同,并且会返回相同的内容。

答案 5 :(得分:-6)

一个大错误,LIMIT很慢,因为select是返回full然后数据库服务器只返回有限的数据。当它用于TOP时。