mysql 存储过程中创建临时表 查询临时表问题

pengcheng_1024 发布于 2013/08/27 17:45
阅读 3K+
收藏 0
select  temp1.aa ,temp2.bb
from ( 
select tt.id ,tt.a as aa from temp as tt
) as temp1
left join (
select te.id,te.b as bb from temp as te
) as temp2 on temp1.id = temp2.id
执行到最后

Procedure execution failed

1137 - Can't reopen table: 'tt'


这是为什?高手指点一下

加载中
0
jerri
jerri
on  temp1.id = te.id 好像是这里不对吧
0
艾斯_韩
艾斯_韩
临时表只能引用一次
艾斯_韩
艾斯_韩
回复 @pengcheng_1024 : 在同一个query语句中,你只能查找一次临时表。例如:下面的就不可用   mysql> SELECT * FROM temp_table, temp_table AS t2;   ERROR 1137: Can't reopen table: 'temp_table'
pengcheng_1024
pengcheng_1024
回复 @梅公子 : 光说没有用啊!!!给个案例
一号男嘉宾
一号男嘉宾
回复 @pengcheng_1024 : 存储过程里面,只要临时表没有被drop 之前,想怎么用就怎么用。
pengcheng_1024
pengcheng_1024
回复 @梅公子 : 是吗??可有案例啊??我的为什么联合查询同一张表时报这个错误啊??
一号男嘉宾
一号男嘉宾
存储过程里面的临时表可以用无数次。
0
moyiguke
moyiguke

准确的说是查询临时表的时候,一个查询语句只能打开一次临时表。mysql报错“Can't reopen table”就是这个。

我也尝试过在存储过程中使用临时表,可能用的不得法,感觉不好用,限制太多了。我后来是用普通的表作为临时表实现的,我给几个关联字段都加了索引,速度不错。

moyiguke
moyiguke
回复 @pengcheng_1024 : 我是创建普通的表,create table。视图也是没有索引的,我感觉不好用。 存储过程调用存储过程我没写过。我估计是这样。 set @result=exec procedure(@val),具体还要看mysql文档了
pengcheng_1024
pengcheng_1024
mysql中存储过程调用另一个存储过程如何写啊?
pengcheng_1024
pengcheng_1024
你是创建视图吗??使用时查询视图??
返回顶部
顶部