首页 > 解决方案 > 创建具有相同列和类型的内存表的最佳方式作为永久表

问题描述

我的问题与这个旧问题相同,但创建一个内存表而不是临时表: Best way to create a temp table with same columns and type as an Permanent table

我已经尝试过了,因为它是旧问题中公认的答案,但它不起作用(我认为这是因为必须声明表变量):

select top 0 *
into @mymemorytable
from myrealtable

它抛出该异常:

消息 102 级别 15 状态 1 第 2 行 '@memorytable' 附近的语法不正确。

我也尝试将表变量声明为declare @mymemorytable as table();,但它当然会引发异常:

消息 102 级别 15 状态 1 第 1 行 ')' 附近的语法不正确。

有没有办法在不声明详细说明所有字段和类型的表变量的情况下实现它?获得它的最佳方法是什么?

谢谢

标签: sql-servertsql

解决方案


您的@table 声明中没有列。您需要输入“myrealtable”的结构。

如果要跳过该部分,则需要使用临时表而不是表值参数。

IE

SELECT *
INTO #table
FROM myrealtable

Alos,一旦完成临时表就删除它被认为是一种好习惯。使用 SELECT * 而不是列出所有列也被认为是不好的做法:)


推荐阅读