如何从db2中提取特定行

y53ybaqx  于 2022-11-07  发布在  DB2
关注(0)|答案(3)|浏览(262)

我需要从DB2中提取特定行。

select istore,row_num() over() from store where row_num()=2;

所以这里我需要从存储表中获取第二行,但上面的查询没有获取任何数据。请帮助我。
先谢谢你

vojdkbi0

vojdkbi01#

您需要在外部查询中获取它,如

select * from
(
select istore, 
ROW_NUMBER() OVER (PARTITION BY some_column ORDER BY some_column) AS rn 
from store 
) tab
where rn = 2;
ghg1uchk

ghg1uchk2#

你没有具体说明你的问题是什么,但你的陈述中有两个错误:
1.窗口函数命名为row_number(),而不是row_num()
1.不能在where子句中使用窗口函数。
使用row_number()而不使用任何order by是没有意义的,因为您最终得到的是随机排序。

select *
from (
   select istore,
          row_number() over (order by something) as rn
   from store
) t
where rn = 2;

用定义行顺序的列名替换something。没有任何顺序就没有“第二行”这样的东西。

3b6akqbq

3b6akqbq3#

下面是不使用ROW_NUMBER()函数的另一种方法。(只有在按值唯一的列进行排序时,这种方法才有效)

select *
from (
   select *
   from store
   order by something asc
   fetch first 2 rows only
) 
order by something desc
fetch first 1 rows only;

相关问题