所以我有一个我要输出的大表,但是,我只想看到20到30之间的行。
我试过
select col1, col2
from table
where rownum<= 30 and rownum>= 20;
但是sql发出错误
我也试过 - 在20到30之间的rownum 它也没用。
那么最好的办法是什么?
答案 0 :(得分:1)
UIApplication.shared.openURL(URL(string: "message://%3c4AFF4992-565C-4AE3-AD5E-0D3717B18305@icloud.com%3e")!)
这仅显示第21行到第30行。请注意您需要对数据进行排序,否则每次都会得到不同的结果。
另见文档中的here。
附录:如同显示的可能重复链接一样,这里的问题是,如果没有第19行,那么就不会有第20行。这就是为什么SELECT *
FROM T
ORDER BY I
OFFSET 20 ROWS --skips 20 rows
FETCH NEXT 10 ROWS ONLY --takes 10 rows
- 方法可以采取的行为只有前x个记录,但是当您需要跳过记录时,您需要通过选择子查询中的rownum或使用rownum
使用rownum的方法示例(适用于较低的oracle版本或其他):
offset ... fetch
答案 1 :(得分:0)
每当使用rownum时,它会计算查询返回的行数。因此,如果您尝试通过选择rownum 20和30之间的所有记录进行过滤,那么只有10行,所以20和30不存在。但是,您可以使用WITH(无论您想要命名),然后包装您的查询并重命名您的rownum列。这样您就可以从选择中进行选择。例。
with T as (
select requestor, request_id, program, rownum as "ROW_NUM"
from fnd_conc_req_summary_v where recalc_parameters='N')
select * from T where row_num between 20 and 30;