oracle 一个结果集是否在另一结果集中存在

来源:百度知道 编辑:UC知道 时间:2024/09/22 16:49:23
如表A,表B 中各只有一列为Name
表A
zhang
liu
wang

表B
zhang
liu
wang
chen
huang

如何判断A表中的结果集在B表中都存在.全部存在返回1,只要A表有一项在B表中不存在,就返回0
谢谢大家,我采纳方案(最优+最早)总结一下:
减集:记录数=0,全部存在;>0,至少一个不在.符合我要求.
交集:记录数=0,全部不存在;>0,至少一个存在,也可实现,但需加工,只有当集合运算后的记录数=表a记录数时,才能确定全部存在

select decode(sign(count(*)),1,0,0,1) from (
select * from a
minus
select * from b)

你如果想一个语句实现只好这样咯~~

select decode(sign(count(*)),1,0,0,1) as fieldname from (
select * from a
minus
select * from b)

一楼的方法很好
巧秒的利用了集合相减
把B从A中减掉
如果有剩余说明两a有不在B中的记录
反之则没有

select (case (select name from a表) when (select name from b表) then '1' else '0' end) as result from b表

使用合并查询的INTERSECT(取交集),我想不用我多解释下面该怎么做了吧。
select A.NAME from A
INTERSECT
select B.NAME from B;