为什么数据库中建了一个临时表,要把原来的表连接到小表取数取不出来

初学者刚学PL/SQL数据库,关于取数问题一直困扰,请各位大侠指教!
例如:我建了一张临时表:
create table tmp_A (msisdn number(20),user_id number(20),account_id number(20),order_id number(20));
然后我可以通过 update tmp_A a
set a.user_id=(select b.user_id from tmp_B b where a.msisdn=b.MSISDN)
commit; 取出 user_id

但是当我要取出order_id 的时候,因为tmp_B这个表数据太大,所以我再次创建一个临时表
create table tmp_order as
select b.USER_ID,b.ACCOUNT_ID,b.order_id
from tmp_C b
where b.sale_id = 69000915;

然后我通过update tmp_A a
set a.order_id=(select b.order_id from tmp_order b where a.user_id=b.user_id);
commit;
更新tmp_A这张表的时候,怎么取不出order_id 呢?

研究了半天,感觉这些语句都木有错呀。。不知道为什么取不出来的呢?

第1个回答  2013-06-16
--tmp_B这个表数据太大 和tmp_C 有什么关系? 你已经拿了各中间表tmp_A了

--你查询这个语句 看看有多少数据
select b.USER_ID,b.ACCOUNT_ID,b.order_id
from tmp_C b
where b.sale_id = 69000915;

--然后 查询这个语句 看看关联有记录没
select 1 from tmp_C b join tmp_A a on a.user_id=b.user_id

--你的语句可以改为
update tmp_A a
set a.order_id=(select b.order_id from tmp_C b where a.user_id=b.user_id and b.sale_id = 69000915);
commit;
--希望解决了楼主的问题 祝楼主学习愉快追问

select 1 from tmp_C b join tmp_A a on a.user_id=b.user_id
这个执行的结果是 1 ,那是证明有关联的吗?
还有,把语句改为上面所写的,也更新不了也。。。

追答

1 只是为了查询快 这个可以反映你查询的行数
你有没有按照我的要求

--然后 查询这个语句 看看关联有记录没
select 1 from tmp_C b join tmp_A a on a.user_id=b.user_id
where b.sale_id = 69000915;

第2个回答  2013-06-18
啊等等等等等等等等等等等等等
相似回答