2017-12-27 6 views
0

SQLステートメントの "IN"句を繰り返し処理する方法はありますか?ループのないSQLの "IN"節を反復する

私の例は次のとおりです。

SELECT * 
FROM store_table 
WHERE store_a IN (1,2,3,4,5,6,7,8,9,10); 

代わりに店舗のすべてを一覧表示するので、それはこのようになります。コードのいくつかの並べ替えを書くリストする方法がある。

SELECT * 
FROM store_table 
WHERE store_a IN (1,2,...10); 

私は上記が実際のSQL構文ではないことを理解していますが、例としてそのように使用したいと思います。私はあなたがすべての店舗を見たいと思ったら構文的にそうするために多くの異なった方法があると思うが、私はちょうど最初の100または最後の20のために心配している。あなたが1000の店を持っていて、最初の500を見たいと思っていたなら、あなたはかなり長く迷惑なコードを持っているでしょうから。

ご協力いただきましてありがとうございます。

+2

は '1と10 '問題の間store_aは、そのリスト内の最後の「X」量を表示する方法はあり –

+0

を解決しましたか? –

+0

row_numberを生成し、必要条件に基づいてwhere句の行番号をフィルタリングしてください –

答えて

0

使用、その後、最初の500件の店舗を見たい場合:

select st.* 
from (select st.* 
     from store_table st 
     order by store_a 
    ) st 
where rownum <= 500; 

これは、その名前のテーブルのために理にかなっている「店舗」ごとに1行を、前提としています。

Oracle 12C +では、fetch first 500 rows onlyを使用することができ、サブクエリを使用する必要はありません。

0

in演算子の代わりに、を使用します。

SELECT * 
FROM store_table 
WHERE store_a BETWEEN 1 AND 10