遇到一个奇怪的问题,一个比较复杂的查询语句:
select ... from table1
left join table2 on ...
left join table3 on ...
left join table4 on ...
where 条件1 and (某字段 in(select .. from ... where ...))
该语句能正确查询到100多条记录,但是在最后where子句中加上一个限制条件 and 条件3 之后,查询出的记录理应减少,但却增加到500多条!然后我弃用left join,把所有的条件都放到where子句中用and连接,这样结果是正确的。可能原因在哪里呢?
select ... from table1
left join table2 on ...
left join table3 on ...
left join table4 on ...
where 条件1 and (某字段 in(select .. from ... where ...))
该语句能正确查询到100多条记录,但是在最后where子句中加上一个限制条件 and 条件3 之后,查询出的记录理应减少,但却增加到500多条!然后我弃用left join,把所有的条件都放到where子句中用and连接,这样结果是正确的。可能原因在哪里呢?
解决方案 »
- 请帮忙写个触发器
- order by case ...end 语法是什么
- 在plsql中,使用绑定变量的方法除了动态sql外,还有别的方式吗
- oracle里用什么命令来显示数据库用户列表?急~~~~~~~~~
- Oracle中,往Clob字段里写内容,字符串必须先转成byte[]类型吗?
- oracle packages的概念问题
- 能否不卸载ORACLE92标准版,直接升级到企业版,如何操作?
- win2000server上装了oracle,访问web几次之后会出现下面提示
- 语法问题?
- 导入DMP文件中途关机,再导入问题
- Win7旗舰Oracle11gr2的各项服务起什么作用?
- 100 分 求一sql语句
具体的实际环境。
tab_B 10条记录
select * from tab_a,tab_b 就会产生100条记录,这就是笛卡儿积。通常查询都是笛卡尔子集。你第三个条件是什么,除了可能差生笛卡尔,也可能是逻辑错误