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

SQL:Oracleテーブルの100,000レコードを5つのチャンクにどのように分割しますか?

    基本的に同じサイズのグループに値1〜5を割り当てるだけの場合は、ntile()を使用します。 :

    select t.*, ntile(5) over (order by NULL) as num
    from (select t.*
          from t
          where rownum <= 100000
         ) t;
    

    5つの異なるテーブルに挿入する場合は、insert allを使用します :

    insert all
        when num = 1 then into t1
        when num = 2 then into t2
        when num = 3 then into t3
        when num = 4 then into t4
        when num = 5 then into t5
        select t.*, ntile(5) over (order by NULL) as num
        from (select t.*
              from t
              where rownum <= 100000
             ) t;
    


    1. PostgreSQLセキュリティのベストプラクティス

    2. MySQLトリガーのデバッグ

    3. Oracle JDBC DriverManager.getConnection()がハングする

    4. あるテーブルから別のテーブルに挿入するPostgreSQLの関数?