2017-04-06 47 views
2

我有一個查詢:在列表中的每個項目,甲骨文的PL/SQL

select sq1.* from (
    select * from table1 
    where type = '1' 
    order by name 
) sq1 
where rownum <= 10; 

,但我要運行這個列表類型2,3,A,B,C了。有沒有辦法做這樣的事情?

my @list = ('1', '2', '3', 'a', 'b', 'c'); 
for each my $item in @list { 
    select sq1.* from (
     select * from table1 
     where type = $item 
     order by name 
    ) sq1 
    where rownum <= 10; 
} 

(是的,我的代碼的Perl編寫的。這是我所知道的了。)

+0

所以,你要的前10行每類?確切地說, –

+0

!我將嘗試弄清楚如何使用查詢加載數組列表。我可以在Perl中完成所有這些工作,但只要在查詢中使用它就簡單多了。 – UpTide

+0

那麼你想要一個包含60個項目的單個結果集? (例如,類型1的前10位,類型2的前10位等)或者您是否需要將這些返回爲10個單獨的集合? –

回答

1
SELECT sq1.* FROM (
    SELECT 
     tbl.*, 
     ROW_NUMBER() OVER (PARTITION BY type ORDER BY name) AS rnk 
    FROM table1 tbl 
    WHERE type IN ('1', '2', '3', 'a', 'b', 'c') 

) sq1 
WHERE rnk <= 10;