一张表有n条记录ABC
。编写一个查询以从表中选择每 5 条记录。
例如,一个表中有 30 行。所以查询应该从表中输出第 5、10、15、20、25 和 30 条记录。
我试过ROW_NUMBER OVER (ORDER BY id )
但得到味精:-
来自 SQL 服务器 IML 的消息(消息 156,级别 15,状态 2):
关键字“OVER”附近的语法不正确。
我正在使用 Sybase 数据库。
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
这不是 SQL 的工作方式。我不确定哪一列会给你想要的东西,但你不应该知道或关心数据的存储方式或排序可能是什么。
您需要找出一个 WHERE 子句来满足您的需求。取决于顺序的东西是错误的。
尝试这个
select rn, col_list from (select rownum rn, col_list from tab_name)
where rn=N;
其中 N 是您想要的行号。
试试这个方法。
创建带有标识列的临时表。
select
id = identity(8),
column1,....
into #ABC
from ABC
模数选择:
select * from #ABC
where id % 5 = 0