sql-server - 创建具有相同列和类型的内存表的最佳方式作为永久表
问题描述
我的问题与这个旧问题相同,但创建一个内存表而不是临时表: 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 行 ')' 附近的语法不正确。
有没有办法在不声明详细说明所有字段和类型的表变量的情况下实现它?获得它的最佳方法是什么?
谢谢
解决方案
您的@table 声明中没有列。您需要输入“myrealtable”的结构。
如果要跳过该部分,则需要使用临时表而不是表值参数。
IE
SELECT *
INTO #table
FROM myrealtable
Alos,一旦完成临时表就删除它被认为是一种好习惯。使用 SELECT * 而不是列出所有列也被认为是不好的做法:)
推荐阅读
- concurrency - 何时将分片添加到分布式键/值存储
- mysql - 错误代码 1824 - 无法打开引用的表
- karate - 将 match contains 与条件逻辑一起使用
- javascript - 从套接字侦听器内部修改反应状态的正确方法是什么?
- visual-studio-code - VS代码如何合并两个文件在同一个项目中
- android - 将新的 NDK .so 文件部署到旧的 Android API
- javascript - 为什么最新的 iPhone 不喜欢我的 Javascript?
- sql - LEFT JOIN CASE QUERY 上的 SUM() 输出不正确
- mysql - 我可以在一张表中有几个相似的外键吗?
- apache-kafka - 如何将“重新分区/更改日志主题”绑定到 Kafka Streams 应用程序中已存在的主题