1

一张表有n条记录ABC。编写一个查询以从表中选择每 5 条记录。

例如,一个表中有 30 行。所以查询应该从表中输出第 5、10、15、20、25 和 30 条记录。

我试过ROW_NUMBER OVER (ORDER BY id )但得到味精:-

来自 SQL 服务器 IML 的消息(消息 156,级别 15,状态 2):

关键字“OVER”附近的语法不正确。

我正在使用 Sybase 数据库。

4

4 回答 4

1

You need to define order to get every 5th row. It can be for example PRIMARY KEY ID or something like this

select * from
(
  select ABC.*, ROW_NUMBER() OVER (ORDER BY id) as RN from ABC
) t1
where RN % 5 = 0
于 2012-12-26T11:32:17.147 回答
0

这不是 SQL 的工作方式。我不确定哪一列会给你想要的东西,但你不应该知道或关心数据的存储方式或排序可能是什么。

您需要找出一个 WHERE 子句来满足您的需求。取决于顺序的东西是错误的。

于 2012-12-26T10:20:38.193 回答
0

尝试这个

  select rn, col_list from (select rownum rn, col_list from tab_name)
  where rn=N;

其中 N 是您想要的行号。

于 2012-12-26T10:22:06.807 回答
0

试试这个方法。

创建带有标识列的临时表。

select 
id = identity(8),
column1,....
into #ABC
from ABC

模数选择:

select * from #ABC
where  id % 5 = 0
于 2012-12-27T09:56:25.143 回答