sql >> データベース >  >> RDS >> Oracle

OracleSQLでデュアルから10,000の一意のIDのリストを選択する方法

    コレクションを使用します(INのような1000アイテムに制限されていません 節は):

    SELECT COLUMN_VALUE AS id
    FROM   TABLE(
             SYS.ODCIVARCHAR2LIST(
               'id123', 'id8923', 'id32983', 'id032098', 'id308230', 'id32983289'
             )
           )
    

    SYS.ODCIVARCHAR2LIST およびSYS.ODCINUMBERLIST SYSで提供されるコレクションタイプです スキーマ。

    これは、SELECTのどのテーブルにも直接結合できます。 DUALを使用せずにから テーブル:

    SELECT y.*
    FROM   your_table y,
           TABLE(
             SYS.ODCIVARCHAR2LIST(
               'id123', 'id8923', 'id32983', 'id032098', 'id308230', 'id32983289'
             )
           ) i
    WHERE  y.id = i.COLUMN_VALUE;
    

    コレクションタイプを作成できる場合は、TABLEも必要ありません。 式を使用して、WHEREで直接使用できます MEMBER OFを使用する句 演算子:

    CREATE OR REPLACE TYPE stringlist IS TABLE OF VARCHAR2(200);
    /
    
    SELECT *
    FROM   yourtable
    WHERE  id MEMBER OF stringlist(
                          'id123', 'id8923', 'id32983', 'id032098', 'id308230', 'id32983289'
                        );
    

    バインドパラメータとして値を渡すこともできます-ここで私の答えを参照してください



    1. Oracle Apps 11i/R12でFRDトレースを生成する方法

    2. SQLServerSELECTを既存のテーブルに追加

    3. Apache2、PHP5、およびMySQL4を使用してWindows XPにWebサーバーをインストールする–パート4

    4. Oraclejdbcクライアントのデフォルトのnls_date_formatを変更する方法