我现在有这样的一个sql语句
select mbrid from fi where cpt in('77425','77427')
怎么才能改成用exists啊
谢谢
select mbrid from fi where cpt in('77425','77427')
怎么才能改成用exists啊
谢谢
解决方案 »
- 安装oracle以后服务里面没有OracleOraHome92ManagerService选项
- 调用一个javaSource的问题
- linux 下oracle9i无法启动【十万火急】
- oracle如何向表导入制表符格式文本?
- 从部分字段记录相同的表中查找只显示其中一条
- oracle9i workgroup edition(10user)for NT能否双机热备用
- 关于case then的使用
- 诸如select xx from tablename where cor in (;something) 中的something怎么变量绑定
- 谁知道深圳或广州最近哪里有oracle 9i原厂培训,谢谢!
- windows系统,oracle连接本地服务器,报错“ORA-12523” 监听程序无法找到适用于客户机连接的例程
- export query results问题
- 看看这个触发器 在线等
where exists(
select 1 from(
select '77425' a from dual uinon all
select '77427' from dual)
where a=cpt)
但就这个语句来说,exists完全没必要。
当
select mbrid from fi where cpt in(select id from a)
in后面跟的是大数据集的时候,可以用exists来代替,避免全表遍历:
select mbrid from fi where exists(select 1 from a where id=fi.cpt)数据集小的时候,用in
并非所有情况下exists都优于in
select mbrid from fi where cpt in('77425','77427');这句sql本来已经很简洁了,在这种情况下in比exists效率要高的,楼主为什么要改成exists呢?改成如下的exists语句即可:
select mbrid from fi
where exists
(
select 1 from
(select '77425' as nc from dual union select '77427' from dual)a
where fi.cpt =a.nc
)