在 SQL 中,创建临时表可以有多种方法,取决于你想要实现的功能和数据库的类型。以下是两种常见的方法:
1. 使用 WITH 子句(常用于 CTE,公用表表达式)
如果你不需要在多个查询中重复使用临时表,并且只是想在一个查询中使用中间结果,可以使用 WITH
子句。这种方法不会真正创建物理临时表,而是生成一个临时的结果集。
1 2 3 4 5 6 7 8 | WITH temp AS ( SELECT column1, column2 FROM original_table WHERE conditions ) SELECT * FROM temp WHERE other_conditions; |
2. 使用 CREATE TEMPORARY TABLE
如果你需要创建一个在整个会话中都可以使用的临时表,可以使用 CREATE TEMPORARY TABLE
语句。这会创建一个物理上的临时表,存储在会话或连接的内存中,通常在会话结束时自动删除。
1 2 3 4 5 6 7 8 9 | CREATE TEMPORARY TABLE temp_table AS SELECT column1, column2 FROM original_table WHERE conditions; -- 然后可以在会话中随时使用 temp_table SELECT * FROM temp_table WHERE other_conditions; |
什么时候使用 WITH 子句 vs. CREATE TEMPORARY TABLE
-
WITH
子句:适用于单个查询中的中间结果集,特别是在你不需要重复使用临时结果集时。通常更简洁,且性能开销较低。 -
CREATE TEMPORARY TABLE
:适用于你需要在多个查询或整个会话中使用相同的数据集,并且需要持久性超过单个查询的情况。
根据你的需求,选择合适的方法来创建临时表。
查询临时表
1 2 | select * from #临时表名; select * from ##临时表名; |
删除临时表
1 2 | drop table #临时表名; drop table ##临时表名; |
使用说明
1 2 3 4 5 6 7 8 9 | drop table #Tmp --删除临时表#Tmp create table #Tmp --创建临时表#Tmp ( ID int IDENTITY (1,1) not null , --创建列ID,并且每次新增一条记录就会加1 WokNo varchar (50), primary key (ID) --定义ID为临时表#Tmp的主键 ); Select * from #Tmp --查询临时表的数据 truncate table #Tmp --清空临时表的所有数据和约束 |
example
1 2 3 4 5 6 7 | IF object_id( 'tempdb..#jimmy' ) is not NULL BEGIN DROP TABLE #jimmy; END SELECT * INTO #jimmy FROM table WHERE 1=1 |
到此这篇关于SQL创建临时表的两种方法的文章就介绍到这了,更多相关SQL创建临时表内容请搜索IT俱乐部以前的文章或继续浏览下面的相关文章希望大家以后多多支持IT俱乐部!