【问题标题】:How to find TOP N rows in sybase without using TOP and rowcount keywords?如何在不使用 TOP 和 rowcount 关键字的情况下在 sybase 中查找 TOP N 行?
【发布时间】:2016-09-12 15:13:53
【问题描述】:

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

select * from <table_name> where <condition>

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

我也无法添加新列。

【问题讨论】:

  • 为什么会有限制?
  • order bylimit 1000 呢?
  • 我的应用程序的编写方式是将条件作为输入。默认添加在哪里。所以。也不能使用限制。
  • @Gangaraju 我不认为限制是 sybase 的一部分

标签: sql database sybase sybase-ase15


【解决方案1】:

在 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

【讨论】:

  • 也不能更改 select 子句。我唯一可以输入的是应用程序将在“where”之后添加的条件
  • @Neo 你能分享一下你的表的列名是什么,以及一些示例数据吗?顺便说一句,您无法仅在 WHERE 之后输入条件似乎很奇怪……这是为什么?
猜你喜欢
  • 1970-01-01
  • 2013-06-07
  • 1970-01-01
  • 2011-06-13
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-07-22
相关资源
最近更新 更多