人
我是SQL新手的测试人员。我正在测试一个应用程序,每次我使用它时我都要输入一个值。为了进行良好的测试,我只能使用每个值一次,而且我必须使用有限的值。但我的同事和我之前随机使用了这些值。
所以,让我们说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做些什么吗?
答案 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;