mysql报错Can't reopen table: 'n'

时间:2022-09-16 11:55:02
语句如下:
CREATE TEMPORARY TABLE tmp_table1(SELECT n.AccountID,n.CampaignID,n.DeviceID,n.MacAddress,n.DeviceIDMD5,n.MacAddressMD5,b.NewType AS DataType FROM tmp_table n,(SELECT DeviceID,MAX(DataType) AS DataType,SUM(DataType) AS NewType FROM lfq_tmp_table GROUP BY DeviceID) b WHERE n.DeviceID = b.DeviceID AND n.DataType = b.DataType); 
其中tmp_table 是一个临时表,里面有数据。

我的目的是从tmp_table 表中按照DeviceID分组过滤重复数据,只保留DataType(int型)最大的那条记录,但是留下来的那条记录的DataType字段要重新设置,设置为 +被滤掉那些数据的DataType的和。

目前执行以上语句时报错:Can't reopen table: 'n'

求解

7 个解决方案

#1


MYSQL在1个SQL中,不能2次打开临时表,用物理表不行?

#2


原来是这个原因啊,用临时表的话是不是就不能实现了呢?

#3


至少目前版本不行,用物理表

#4


把tmp_table导入到物理表里就行了

#5


直接用个普通表,用完后DROP掉,或者truncate掉就行了。

#6


直接建立普通表,不能两次使用临时表的。

#7


该回复于2013-09-02 15:59:05被管理员删除

#1


MYSQL在1个SQL中,不能2次打开临时表,用物理表不行?

#2


原来是这个原因啊,用临时表的话是不是就不能实现了呢?

#3


至少目前版本不行,用物理表

#4


把tmp_table导入到物理表里就行了

#5


直接用个普通表,用完后DROP掉,或者truncate掉就行了。

#6


直接建立普通表,不能两次使用临时表的。

#7


该回复于2013-09-02 15:59:05被管理员删除