表ABC
中有n条记录。
写一个查询来从表中选择每第5条记录。
例如表中有30行。 所以查询应从表中输出第5,10,15,20,25和30条记录。
我试过了ROW_NUMBER OVER (ORDER BY id )
但是收到了消息: -
来自SQL Server IML的消息(消息156,级别15,状态2):
关键字'OVER'附近的语法不正确。
我正在使用Sybase数据库。
答案 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