You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何在SQL Server中创建临时表?能否用类似Redshift的语句从现有表生成?

在SQL Server中创建临时表的等效写法

当然有啦!SQL Server支持和Redshift非常类似的语法来快速创建临时表,不过有两种常用的写法,我给你详细说明:

1. 本地临时表(仅当前会话可见)

这是最常用的场景,临时表仅在你的当前数据库连接中可用,断开连接后会自动被清理。你可以用两种方式实现:

方式一:CREATE TABLE ... AS SELECT(和Redshift语法几乎一致)

CREATE TABLE #CARS AS SELECT * FROM BD_CARS_111;
-- 查询临时表
SELECT * FROM #CARS;

方式二:SELECT ... INTO(SQL Server中更传统的写法)

这种写法也很常用,效果完全相同:

SELECT * INTO #CARS FROM BD_CARS_111;
SELECT * FROM #CARS;

2. 全局临时表(所有会话可见)

如果你需要让其他数据库连接也能访问这个临时表,可以用全局临时表(名称以##开头),它会在创建它的连接关闭,且没有其他连接在使用它时才被删除:

CREATE TABLE ##CARS AS SELECT * FROM BD_CARS_111;
-- 或者用INTO写法
SELECT * INTO ##CARS FROM BD_CARS_111;

SELECT * FROM ##CARS;

小提示

  • 两种写法都能快速复制源表的结构和数据,如果需要自定义表结构(比如添加约束、修改字段类型),可以先手动创建临时表,再用INSERT INTO ... SELECT来导入数据。
  • 本地临时表的名称前必须加#,全局临时表加##,这是SQL Server临时表的标识规则。

内容的提问来源于stack exchange,提问作者dapdap

火山引擎 最新活动