oracle中有一个表字段为A,有索引,也是主键。现在要在这个字段查询是否包含一些数据。

假如一些数据是少量,我知道可以用in。但是这些数据是大量,四万多个。怎么关联查呢?
最新回答
墨语三千

2024-10-17 08:34:10

假设你的这个表的表名是TA
你再新建一个表,假设表名为TB
先将你4万个数据导入到TB中
然后你可以关联两个表就简单多了
可以查询个数:
select count(a) from ta where a in (select a from tb)
追问
那从A拿出一条数据,然后去执行select a from tb , 这样的话 每从A拿一条,就要去执行子查询。本来子查询就是四万多条数据,你这样语句太低了。
追答
本来就是这样比较的啊,你这种操作的结果都是笛卡尔积。
还能有更高级的方法?
七喜先生

2024-10-17 08:02:29

要查询的这个表是TA,把四万多数据放在表TB中,加上索引。
select * from TA where EXists (select * from TB where tb.A=TA.A)
查出来的就是关联到的。

要查这四万多条数据中哪些在TA中没有:
select * from TB where not exists (selectd * from TA where TA.a=TB.A)
我可男可女可攻可受!

2024-10-17 09:59:46

用 exists 或者直接 join 来进行查询