你是怎么表演的
Select top N * from as400table
Run Code Online (Sandbox Code Playgroud)
对as400/db2数据库进行类型查询
Jam*_*ore 47
Select col1,col2
from
as400table
where col1='filter'
order by col1
fetch first N row only
Run Code Online (Sandbox Code Playgroud)
请记住设置一个ORDER BY
子句,因为DB2不保证返回的行FETCH FIRST N ROW ONLY
总是相同的N.
aje*_*jeh 13
严格来说,DB2中没有TOP N的等价物.
SELECT 1 FROM sysibm.sysdummy1
WHERE EXISTS (SELECT 2 FROM sysibm.sysdummy1)
FETCH FIRST ROW ONLY
Run Code Online (Sandbox Code Playgroud)
编译并运行,但是
SELECT 1 FROM sysibm.sysdummy1
WHERE EXISTS (SELECT 2 FROM sysibm.sysdummy1 FETCH FIRST ROW ONLY)
Run Code Online (Sandbox Code Playgroud)
不会编译.
TOP N
并且FETCH FIRST N
不一样.FETCH FIRST
每个查询只能使用一次,而TOP N
可以在任何子选择中使用.
您可以在子查询中使用窗口函数来模拟TOP N
:
select *
from (
select id, row_number()
over (order by id) as rn
from testsch.testtbl
) as r
where r.rn < 100 -- This is N rows you are looking for
Run Code Online (Sandbox Code Playgroud)
这将返回99行.我在iSeries 7中尝试过它并且它有效.