select count(*) from (
(select * from table_a where 条件 order by 排序字段)
minus
(select * table_b where 条件 order by 排序字段)
);
--结果为0说明相等
------其他解决方案-------------------- 1-2=0 and 2-1=0
两次的结果都是0就是相等。 ------其他解决方案-------------------- 可以考虑通过wm_concat把两边的结果集中起来,再拿两边的结果做比对看是否相同 ------其他解决方案-------------------- 判断两个集合是否相同
declare
type my is table of varchar2(10);
va1 my := my('a', 'b', 'c');
va2 my := my('a', 'b', 'c');
begin
if va1 = va2
then
dbms_output.put_line('相同');
else
dbms_output.put_line('no相同');
end if;
end; ------其他解决方案--------------------
A minus B union all B minus A
这样 ------其他解决方案-------------------- 上面的有点点问题呢。
minus运算:
返回在第一个查询结果中与第二个查询结果不相同的那部分行记录。
比如第一个结果是第二个结果的子集,那返回的结果是0
和我需要的是不一样的,我要的是个数,值,顺序(通过order by实现)均一样才相等 ------其他解决方案--------------------
A minus B unino all B minus A ------其他解决方案--------------------