创建与使用临时表要点
- 加 TEMPORARY 建表:CREATE TEMPORARY TABLE 表名 (列 类型, ...)
- 也能从查询直接建表:CREATE TEMPORARY TABLE 新表 AS SELECT ... FROM 源表
- 写入方式与普通表一致:INSERT INTO 临时表 (列) VALUES (值)
- 读取也用 SELECT * FROM 临时表,但 SHOW TABLES 列表里看不到它
- 主动清理用 DROP TEMPORARY TABLE IF EXISTS 表名,断开连接会一并回收
- 临时表名可和普通表重名,此时本会话内同名引用全部指向临时表
创建与使用临时表示例
-- 新建一张会话内的临时表
CREATE TEMPORARY TABLE tmp_hot_goods (
goods_id INT NOT NULL,
sales_cnt INT NOT NULL DEFAULT 0,
region VARCHAR(20)
);
-- 从订单表直接灌入热门商品(避免用大于等于,改用 BETWEEN)
CREATE TEMPORARY TABLE tmp_hot_goods AS
SELECT goods_id, COUNT(*) AS sales_cnt, region
FROM orders
WHERE created_at BETWEEN '2026-01-01' AND '2099-12-31'
GROUP BY goods_id, region;
-- 写一行 / 读出来
INSERT INTO tmp_hot_goods (goods_id, sales_cnt, region)
VALUES (9001, 38, '华东');
SELECT * FROM tmp_hot_goods ORDER BY sales_cnt DESC;
-- 用完主动删
DROP TEMPORARY TABLE IF EXISTS tmp_hot_goods;
避坑提醒:临时表不进 SHOW TABLES 的结果,排查'表去哪了'时记得它压根不会出现在全局列表,只能在本连接内访问。