从Oracle SQL Developer中的列表返回未使用的值

时间:2016-04-15 22:35:26

标签: sql oracle

我是SQL新手的测试人员。我正在测试一个应用程序,每次我使用它时我都要输入一个值。为了进行良好的测试,我只能使用每个值一次,而且我必须使用有限的值。但我的同事和我之前随机使用了这些值。

所以,让我们说1834, 1835, 1836...已降至20001850...1900已被采纳。但是,1850...1900分别在ATTR列下的ID_TX表格中创建了一行。

我对FIND * FROM ATTR WHERE ID_TX BETWEEN 1834 AND 2000;

了解得足够多

这将返回所有使用的值,这意味着我仍然需要更改列表以删除这些值。

我已经尝试了WHERE NOT EXIST,但是要么显示我列出的每个ID_TX,或者没有向我显示任何内容。

我的问题是,有没有办法查询使用BETWEEN或使用IN列表从未存储在数据库中的列表中返回数据库中不存在的所有数字数据库?如果在工作表中没有简单的查询方法,那么我可以用PLSQL做些什么吗?

1 个答案:

答案 0 :(得分: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;