2012-12-26 16 views
1

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

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

我试图ROW_NUMBER OVER (ORDER BY id)但得到MSG: -

从SQL服务器IML消息(MSG 156,15级,状态2):

语法错误关键字邻近 'OVER'。

我正在使用Sybase数据库。

+2

如何判断哪一行是第5次? – SWeko

+0

'ROW_NUMBER()OVER'在SYBASE上不起作用! – Parado

+0

@Parado:我怎样才能解决问题:( – avinashse

回答

0

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

你需要找出一个WHERE子句,给你你想要的。取决于顺序的东西是错误的。

+0

如果sypace dan计算一个行号(这是大多数SQL可以),您可以使用它来筛选(%5)查询。stnadard例如寻呼等。看到回答由valex。 – TomTom

0

试试这个

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

,其中N是你想要的行数。

1

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

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

我试过你的解决方案,但没有它的显示错误:( – avinashse

+0

我已经改变了查询,现在试一下 – valex

+0

显示agani从SQL服务器消息IML(msg 156 ,级别15,状态2): 关键字'OVER'附近的语法错误 '错误 – avinashse

0

试试这种方法。

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

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

选择与模:

select * from #ABC 
where id % 5 = 0 
相关问题