从表中找到每5条记录

时间:2012-12-26 10:18:48

标签: sql sybase

ABC中有n条记录。 写一个查询来从表中选择每第5条记录。

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

我试过了ROW_NUMBER OVER (ORDER BY id )但是收到了消息: -

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

  

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

我正在使用Sybase数据库。

4 个答案:

答案 0 :(得分:1)

您需要定义订单才能获得第5行。它可以是例如PRIMARY KEY ID或类似的东西

select * from
(
  select ABC.*, ROW_NUMBER() OVER (ORDER BY id) as RN from ABC
) t1
where RN % 5 = 0

答案 1 :(得分:0)

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

您需要找出一个WHERE子句,它可以为您提供所需的内容。取决于顺序的东西是错误的。

答案 2 :(得分:0)

试试这个

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

其中N是您想要的行号。

答案 3 :(得分:0)

试试这种方式。

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

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

使用模数选择:

select * from #ABC
where  id % 5 = 0