2017-03-17 18 views
-2

私はOracleデータベースからランダムな行を削除する必要があるプロジェクトに取り組んでいます。どのクエリを使用する必要がありますか?Oracleデータベースで一度に1つのランダムな行を削除する方法

+0

試してみましたか?おそらく、最小の1と既存のデータベースの最大サイズのランダムな整数を生成し、次にプライマリキーで削除する –

+0

十分な1行のクエリがありますが、それを取得できません – Indrapreet

+1

もう一度何を試しましたか?なぜこの質問はJavaでタグ付けされていますか?私は質問にjavaに関連するものは何も見ません。 – klutt

答えて

2

明らかにDELETEステートメントです。それは難しいランダムな部分です。

Oracleには、ランダム性を処理するPL/SQLパッケージDBMS_RANDOMがあります。テーブルが小さいか、パフォーマンスが重大でない場合、これは動作します:

delete from your_table 
where id = (select id from 
       ( select id from your_table 
        order by dbms_random.value) 
      where rownum = 1) 
/

最も内側のクエリはテーブルをランダムな順序で並べ替えます。サブクエリはそのセットから一番上の行を選択し、それが削除される行です。また

、あなたが持っているどのように多くのレコードを知っていれば...あなたはすでに何を

delete from your_table 
where id = (select round(dbms_random.value(1,10000)) 
      from dual) 
+0

ありがとうございます#APC、それは私のために働いた:-) – Indrapreet

+0

この回答は、あなたがそれを受け入れる必要がある場合(および/またはupvote)。受け入れられた回答は、このサイトを他の求職者のためのリソースとして改善します。 – APC

+0

@Indrapreet答えが正しい場合は、回答とupvoteを受け入れます。 – user75ponic

関連する問題