【问题标题】:insert all columns From a Table to a Table Variable将表中的所有列插入表变量
【发布时间】:2019-08-29 21:01:35
【问题描述】:

我正在使用 TSQL(SQL Server)。

我开始使用表变量进行轻量级操作。

这些很容易使用,但我发现填充这些有点不方便,或者 我错过了一些东西。

假设我想将包含 25 列的表中的所有行插入到表变量中。

我唯一能让它工作的方法是定义一个包含所有 25 列的 Table 变量,然后进行插入。

有没有办法可以自动完成?那就是我们没有定义临时表中的列,它们是在插入时动态生成的?

【问题讨论】:

  • 不,除非您喜欢动态生成 everything —— 包括表声明语句、插入和任何其他处理它们的方法。坦率地说,这就是疯狂。 T-SQL 讨厌动态结果集,它不怕让你感到痛苦。 (您可以 SELECT INTOINSERT .. EXEC 访问临时表,而不必求助于动态 SQL,但这只能解决一半的问题。)
  • 对此here 进行了一些讨论,包括替代建议。
  • 您考虑过使用临时表吗?从 [YourTable] 中选择 [YourColumns] 到 #TempTable
  • 您应该使用临时表而不是表变量。它们将实现更少的功能,但麻烦更少并具有一些额外的好处(如果您最终更密集地使用它们)。
  • 除非您的表变量显式声明为内存中,否则它们通常不会比临时表快。事实上,由于缺乏统计数据,它们通常较慢,从而产生较差的执行计划。表变量默认保存在内存中是一个常见的误解——它们不是。

标签: sql-server tsql


【解决方案1】:
If(OBJECT_ID('tempdb..#Temp') Is Not Null)
Begin
    Drop Table #Temp --If exists 
End

SELECT TableName, TableRowCount 
INTO #Temp
FROM tbl_TableName 

SELECT * FROM #Temp

注意:- 您可以使用#Temp 表代替 Table 作为变量..

【讨论】:

  • 可能是因为它没有回答问题。
  • 也没有任何解释。它掩盖了一个事实,即 OP 使用表变量,而这个建议使用临时表——它们是相似但仍然不同的东西。
猜你喜欢
  • 2018-10-27
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-05-26
  • 2017-05-03
  • 1970-01-01
  • 2015-03-21
相关资源
最近更新 更多