我有一张由主键(ID)和类型标识符(TYPE_ID)标识的异构数据表。我希望能够执行一个查询,该查询返回给定类型的一组范围,这些范围被分成均匀的页面大小。例如,如果有10,000个类型为'1'的记录,并且我指定页面大小为1000,我想要10对数字,表示我可以在后续查询的BETWEEN
子句中使用的值来查询DB 1000一次记录。
我最初的尝试是这样的
select id, rownum from CONTENT_TABLE
where type_id = ? and mod(rownum, ?) = 0
但这不起作用。
答案 0 :(得分:4)
答案 1 :(得分:3)
rownum
被“评估”
评估选择查询的where clause
。因此,你需要
在另一个查询中选择rownum。我将r作为rownum的别名:
select id from (
select
id,
rownum r
from
CONTENT_TABLE
where type_id = ?
)
where mod(r, ?) = 0
答案 2 :(得分:-1)
您可以在SQL下面使用以查找表中的每个第n行:
SQL查询:
SELECT *
FROM table_name
WHERE (ROWID,0) in (SELECT ROWID, MOD(ROWNUM, n)
FROM table_name);
Replace n with 2, 3, 4 , 5 ...