2016-04-15 5 views
0

Oracle SQL Developerのリストから未使用の値を戻す

私はSQLを初めて使用するテスターです。私が値を入力する必要があるアプリケーションをテストしています。良いテストのためには、すべての値を1回しか使用できません。限られた範囲の値を使用する必要があります。しかし、私の同僚と私は以前にこれらの値をランダムに使用していました。

1834, 1835, 1836...2000に下がっているとします。 1850...1900が撮影されます。しかし、1850...1900はそれぞれATTRテーブルの行をID_TXカラムの下に作成しました。

私はFIND * FROM ATTR WHERE ID_TX BETWEEN 1834 AND 2000;

に十分に知っているこれは、私はまだそれらの値を削除するには、リストを変更する必要がありますを意味し、すべての使用された値を返します。

私はWHERE NOT EXISTを試しましたが、そのリストにないID_TXが表示されるか、何も表示されません。

BETWEENを使用してクエリを実行するか、INリストを使用してデータベースに保存されていないリストからデータベースに存在しないすべての数値を返す方法はありますか?ワークシート内のクエリで簡単な方法がない場合は、PLSQLでこれを行うことができますか?

答えて

3

あなたは番号を生成し、既存の番号を削除するためにMINUSを使用して、階層クエリを使用することができます。

SELECT LEVEL + 1833 
FROM DUAL 
CONNECT BY LEVEL <= (2000 - 1833) 
MINUS 
SELECT ID_TX 
FROM ATTR 
WHERE ID_TX BETWEEN 1834 AND 2000; 
+0

、MTO、ありがとうございました。私はID_TXがvarcharとして格納されていることを知ったので、to_number(trim(replace)(ID_TX、 '。'、 '、')))を使用しなければなりませんでした。 –

関連する問題