Dou*_*ter 13
您可以做的最好的事情是根据给定的输入集比较2个查询输出,寻找任何差异.要说它们将始终为所有输入返回相同的结果,这实际上取决于数据.
对于Oracle来说,最好的方法之一(非常有效)就在这里(Ctrl+ F比较两个表的内容):
http://www.oracle.com/technetwork/issue-archive/2005/05-jan/o15asktom-084959.html
归结为:
select c1,c2,c3,
count(src1) CNT1,
count(src2) CNT2
from (select a.*,
1 src1,
to_number(null) src2
from a
union all
select b.*,
to_number(null) src1,
2 src2
from b
)
group by c1,c2,c3
having count(src1) <> count(src2);
Run Code Online (Sandbox Code Playgroud)
您应该真正检查Cosette:它检查(带有证明)2个SQL查询是否等效,如果不相等则检查计数器示例。这是绝对可以肯定的唯一方法,几乎是;)您甚至可以在其网站上输入2个查询并立即检查(正式)等效性。
链接到珂赛特:http : //cosette.cs.washington.edu/
链接到文章,该文章对Cosette的工作方式进行了很好的解释:https://medium.com/@uwdb/introducing-cosette-527898504bd6
如果您只是想快速实用地解决问题,还可以检查一下stackoverflow答案: [sql-检查两个select是否相等]