当前位置: 代码迷 >> J2EE >> oracle sql查询有什么讲究吗 帮小弟我看看 多谢
  详细解决方案

oracle sql查询有什么讲究吗 帮小弟我看看 多谢

热度:95   发布时间:2016-04-22 02:12:58.0
oracle sql查询有什么讲究吗 帮我看看 谢谢
select distinct c.constel_sid,c.* from 
(select * 
  from biz_constellation a,
  ( select constel_sid  
  from biz_daily_constel 
  where curr_date=to_date('2011-11-30','yyyy-mm-dd')
  ) b 
where a.constel_sid 
in( 
  select constel_sid from biz_daily_constel where curr_date=to_date('2011-11-30','yyyy-mm-dd')
  ) 
order by a.DATE_FROM
 ) c 
where '1'='1';
这个语句有问题吗 谢谢 大牛们帮我看看

------解决方案--------------------
select distinct c.constel_sid,c.* from
(select *
from biz_constellation a where a.constel_sid
in(
select constel_sid from biz_daily_constel where curr_date=to_date('2011-11-30','yyyy-mm-dd')
)
order by a.DATE_FROM
 ) c
where '1'='1';

------解决方案--------------------
select返回的结果集可以看作是一个临时表
LZ试试在oralce环境下运行一下就好了
大概看一眼,感觉 order by a.DATE_FROM 和 where '1'='1' 可以不要
where a.constel_sid
in(
select constel_sid from biz_daily_constel where curr_date=to_date('2011-11-30','yyyy-mm-dd')
)
改成 where a.constel_sid = b.constel_sid 就好了
否则a和b没有条件关联约束,会造成交叉查询,即每一条a对应所有的b,会产生庞大的结果集,得到的结果应该不是LZ想要的

  相关解决方案