Sql 如何限制Sybase中返回的结果数量?

Sql 如何限制Sybase中返回的结果数量?,sql,limit,sybase,Sql,Limit,Sybase,我需要查询一个Sybase数据库,其中包含大量数据,并希望设置一个限制,以便DB在10个结果后停止查询 关键是性能,所以如果它搜索所有结果,然后返回最后10个结果,那就没有用了 提前感谢我相信您可以先设置行数10,然后在此会话中的所有查询直到进一步设置行数都将返回不超过10行。正如一条评论所指出的,这会影响会话中的所有后续查询,而不仅仅是选择!除非通过设置为0或以不同的方式关闭,否则这种全局效果会使它不如其他引擎的典型限制子句方便,因为它本质上是每个查询,但是,我认为您对此无能为力。对于Syba

我需要查询一个Sybase数据库,其中包含大量数据,并希望设置一个限制,以便DB在10个结果后停止查询

关键是性能,所以如果它搜索所有结果,然后返回最后10个结果,那就没有用了


提前感谢

我相信您可以先设置行数10,然后在此会话中的所有查询直到进一步设置行数都将返回不超过10行。正如一条评论所指出的,这会影响会话中的所有后续查询,而不仅仅是选择!除非通过设置为0或以不同的方式关闭,否则这种全局效果会使它不如其他引擎的典型限制子句方便,因为它本质上是每个查询,但是,我认为您对此无能为力。

对于Sybase 12.5及更高版本,您可以在select语句中使用top谓词。这是一个非ANSI特性,MSSQL已经有相当一段时间了

select top 10 * from people
不能在子查询、更新或删除中使用top,并且没有相应的“bottom”子句


top的优点是您不必担心重置它。如果您使用的是数据库连接池,这一点尤其重要。

我碰巧发现了这个问题,并使用TOP和START-AT从sybase doc替换MySQL LIMIT找到了答案。您需要使用ORDER BY for,否则将产生不可预测的结果

选择前2名,从5开始* 来自员工
按姓DESC排序

并将ROWCOUNT设置为0以关闭行计数限制。还值得强调的是,当它设置为非零值时,其他语句(如update和delete)将受到影响。您想要哪10个?前10个?用于更新和删除。更新人的前10名。。。删除前10名,请参见