SQL中Top和Limit关键字的区别

reg*_*gie 61 sql

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

SELECT TOP 2 * FROM Persons;
Run Code Online (Sandbox Code Playgroud)

SELECT * FROM Persons limit 2;
Run Code Online (Sandbox Code Playgroud)

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

Mar*_*ith 61

如果您正在使用SQL Server TOP,请使用MySQLPostgres使用Limit!

AFAIK目前没有产品支持这两种产品.是当前实施的一个列表,这是另一个(涵盖更多产品,但不太详细)

  • SAP HANA [支持TOP以及LIMIT](http://help.sap.com/saphelp_hanaplatform/helpdata/en/20/fcf24075191014a89e9dc7b8408b26/content.htm?frameset=/en/20/fc06a7751910149892c0d09be21a38/frameset.htm¤t_toc=/en /2e/1ef8b4f4554739959886e55d4c127b/plain.htm&node_id=195). (9认同)
  • 上述大多数(如果不是全部)在 2011 年都不存在 (3认同)

ren*_*ene 31

正如我在上面对Martin Smith的回答所做的评论中所述,有些产品都支持这两种产品,LIMIT并且TOP(正如您在此处所见).区别在于TOP只选择前n个记录,但LIMIT允许定义偏移量以检索特定范围的记录:

SELECT * FROM ... LIMIT 5 OFFSET 10
Run Code Online (Sandbox Code Playgroud)

在跳过10条记录后,此语句选择前5条记录,这是不可能的TOP.

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


小智 13

TOP&LIMIT都适用于亚马逊Redshift


And*_*mar 11

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


小智 5

没有区别。在TOPLIMIT关键字相同的功能,并且将返回相同的事情。