使用临时表的诸多限制
引擎类型只能是:memory(heap)、myisam、merge、innodb
不支持mysql cluster
同一个查询语句中只能引用一次! 如 SELECT * FROM TP_TABLE , TP_TABLE AS ALIAS_NAME; 是错误的
同一个用户存储函数中只能引用一次!
show tables 不会显示临时表
不能使用rename重命名临时表。只能使用ALTER TABLE OLD_TP_TABLE_NAME RENAME NEW_TP_TABLE_NAME;
影响使用replication功能
报错实例
#创建临时表1
DROP TEMPORARY TABLE IF EXISTS `temp_info1`;
CREATE TEMPORARY TABLE `temp_info1`(
tid INT auto_increment -- 自增列
,starttime VARCHAR(20) -- 开始时间
, PRIMARY KEY(tid)
);
DROP TEMPORARY TABLE IF EXISTS `temp_info2`;
CREATE TEMPORARY TABLE `temp_info2`(
tid INT auto_increment -- 自增列
,starttime VARCHAR(20) -- 开始时间
, PRIMARY KEY(tid)
);
#debug 以下会报错
SELECT a.starttime
FROM temp_info1 AS a
INNER JOIN temp_info1 AS b ON b.tid=a.tid;
#正确--曲线救国
-- 复制一份
INSERT temp_info2(starttime)
SELECT starttime FROM temp_info1;
-- 执行查询
SELECT a.starttime
FROM temp_info1 AS a
INNER JOIN temp_info2 AS b ON b.tid=a.tid;
#销毁临时表
DROP TEMPORARY TABLE IF EXISTS `temp_info1`;
DROP TEMPORARY TABLE IF EXISTS `temp_info2`;
--转自