Sql 如何在不使用TOP和rowcount关键字的情况下查找sybase中的前N行?

Sql 如何在不使用TOP和rowcount关键字的情况下查找sybase中的前N行?,sql,database,sybase,sybase-ase15,Sql,Database,Sybase,Sybase Ase15,我需要在不使用top和rowcount的情况下找出表的前1000行。我必须在查询中使用where子句。查询应如下所示: 从何处选择* 我没有任何好的列可以用在where子句中 此外,我无法添加新列。使用具有order by中文字值的row_number可能是您正在寻找的解决方案 with n as ( SELECT neo.* , ROW_NUMBER() OVER (ORDER BY (SELECT 100)) as [rn] FROM &l

我需要在不使用top和rowcount的情况下找出表的前1000行。我必须在查询中使用where子句。查询应如下所示:

从何处选择*

我没有任何好的列可以用在where子句中


此外,我无法添加新列。

使用具有order by中文字值的row_number可能是您正在寻找的解决方案

with n as (
    SELECT 
        neo.* 
        , ROW_NUMBER() OVER (ORDER BY (SELECT 100)) as [rn]
    FROM <table_name> neo
) 
SELECT 
    n.*
FROM n 
WHERE n.[rn] <= 1000 -- first 1000 rows

为什么会有限制?order by和limit 1000呢?我的应用程序的可能副本是以一种将条件作为输入的方式编写的。默认情况下,将添加其中。所以也不能使用limit。@Gangaraju我不认为limit是sybaseCant对select子句的一部分。我唯一能输入的是应用程序在运行后添加的条件where@Neo您能否共享表的列名以及一些示例数据?顺便说一句,似乎很奇怪,你不能只输入WHERE之后的条件。。。为什么呢?