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
#1
MYSQL在1个SQL中,不能2次打开临时表,用物理表不行?
#2
原来是这个原因啊,用临时表的话是不是就不能实现了呢?
#3
至少目前版本不行,用物理表
#4
把tmp_table导入到物理表里就行了
#5
直接用个普通表,用完后DROP掉,或者truncate掉就行了。
#6
直接建立普通表,不能两次使用临时表的。