Oracle中如何将数据用于exists

我想使用exists来判断表中某个字段是否存在于某个范围,但是exists的使用方法是:
select * from A where exists (select 1 from B where A.id = b.id),也就是必须要一个相关的表B,才能使用exists查询。我目前有的是一组这种形式的数据:(1,4,6,3,5),而不是一个表,问一下想查看A的id是否在这个范围中,怎么写SQL呢?
不能用in关键字,因为id字段是有索引的。
我写的数据:(1,4,6,3,5)只是举个例子,实际的数据比这更复杂,几千条,用in也可以,但是不会用到索引,效率会很低
最新回答
风夏了白雪

2024-07-09 09:56:54

你的数据明显就是可以使用 in 的,又不能使用 in ,
只好 把这一组数据写到一个表里,这样就可以不用 in 而用 exists 了。

几千条数据,你做一个临时表B,把数据写入临时表B里,
然后用 select * from A where exists (select 1 from B where A.id = b.id)
﹌傲似。表情帝╯▽╰

2024-07-09 07:14:29

比如你这个数组就是一个字符串

select * from 表名 where instr('1,4,6,3,5',id)>0