2011-07-10 4 views
24

私はテーブルの上にselect文を使用したいと一時テーブル変数に結果を挿入するが、私は列を持つ一時テーブルを宣言していないと私はこのように使いたい:宣言テーブルなしで[* ttpテーブル]を選択するには?

Declare #tmp table; 

SELECT * INTO #tmp FROM myTable 

これは、列とデータを宣言したいです、とにかくだけ@table変数#TEMPテーブルには有効ではありません - #tmp

用のタイプが

は私が

+0

select intoはテーブルの真のコピーではないことに注意してください。たとえば、ID列がある場合、このプロパティは保持されますが、他のテーブルのプロパティとオブジェクト(インデックス、制約、トリガなど)はコピーされません。 –

答えて

30

あなたは単にDECLAREコマンドなしでこれを行うことができます助けてください。最初#tmpを定義しようとせずに、単に以下を試してみました:データと

SELECT * INTO #tmp FROM myTable; 
+0

Aaronに感謝しますが、この方法ではsysテーブルにテーブルを作成します –

+0

tempdb.sys.tablesにエントリを作成せずに#tempテーブルを作成するにはどうすればよいですか?なんで気にするの?とにかくtempdb.sys.tablesに行を生成せずに#tempテーブル(または@テーブル変数)を作成することはできません。 –

+0

オハイオ州、はい。アロンに感謝します。私は手動でドロップテンポラリテーブルを決定する –

25

select * 
into #tmp 
from myTable 

データはありません

select * 
into #tmp 
from myTable 
where 0=1 

ところで、あなたははこれを行うことはできませんテーブル変数を使用します。

select * 
into @tmp 
from myTable 

テーブル変数は列で宣言する必要があります。

+4

空を作成するための参照用に+1表。 –

+0

@アロン - 正しい答えで最初から私のものが1つあります:) –

+0

私は約3秒であなたを倒すことができますか? :-) –

関連する問題