创建与使用临时表

用 CREATE TEMPORARY TABLE 建一张只属于当前连接的表,语法跟普通表几乎一样,只是多一个 TEMPORARY 关键字。它能让你把一段复杂查询的中间结果落盘,后续反复读取而不必每次重算,特别适合报表和去重场景。

创建与使用临时表要点

创建与使用临时表示例

						-- 新建一张会话内的临时表
						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 的结果,排查'表去哪了'时记得它压根不会出现在全局列表,只能在本连接内访问。
创建与使用临时表 · 临时表 知识卡片
卡片 02 / 07 · 临时表(1080×1440 速查卡片)

临时表知识点