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想要的