一時テーブルへのデータの挿入


195

一時テーブルを作成し、そのようにデータ型を宣言した後。

 CREATE TABLE #TempTable(
 ID int,
 Date datetime,
 Name char(20))

次に、データベース内の物理テーブルに既に保持されている関連データをどのように挿入しますか?

回答:


244
INSERT INTO #TempTable (ID, Date, Name) 
SELECT id, date, name 
FROM physical_table

5
テーブルを使い終わったら忘れずに削除してください。そうしないと、「データベースに '#TempTable'という名前のオブジェクトが既に存在します」と遭遇する可能性があります。エラー(クエリをもう一度実行する必要があります...)
Rhdr

最初の質問は、すでに作成されたテーブルに関するものでした。ヒントは役立つので、著者の質問とは関係ありません
アレクサスリン

98

すべての列からすべてのデータを挿入するには、次のように使用します。

SELECT * INTO #TempTable
FROM OriginalTable

DROP一時テーブルを使い終わった後、作成し直す前に忘れないでください。

DROP TABLE #TempTable

9
私は持っていないので、私はこれが好きCREATE#TempTable
MAbraham1


41

InsertSQL Serverでの私のやり方。また、私は通常、一時テーブルが存在するかどうかを確認します。

IF OBJECT_ID('tempdb..#MyTable') IS NOT NULL DROP Table #MyTable

SELECT b.Val as 'bVals'
  INTO #MyTable
FROM OtherTable as b

21
SELECT * 
INTO #TempTable
FROM table

本当にここで最も簡単な答え。dbo.MyTableを使用することもでき、それは永続的なテーブルになります。イージーピージー
Fandango68

15

私は同じ問題を解決するために2つのアプローチを提供しました、

解決策1:このアプローチには2つのステップが含まれます。最初に、指定されたデータ型で一時テーブルを作成し、次に既存のデータテーブルから値を挿入します。

CREATE TABLE #TempStudent(tempID  int, tempName  varchar(MAX) )
INSERT INTO #TempStudent(tempID, tempName) SELECT id, studName FROM students where id =1

SELECT * FROM #TempStudent

解決策2:このアプローチは単純で、一時テーブルに値を直接挿入でき、システムは自動的に元のテーブルと同じデータ型の一時テーブルを作成します。

SELECT id, studName  INTO #TempStudent FROM students where id =1

SELECT * FROM #TempStudent

これは一時テーブルであることは認識していますが、varchar(MAX)の使用はお勧めしません。
bp_

8

正しいクエリ:

drop table #tmp_table

select new_acc_no, count(new_acc_no) as count1
into #tmp_table
from table
where unit_id = '0007' 
group by unit_id, new_acc_no
having count(new_acc_no) > 1

10
この答えは質問とは関係ありません。あなたはこの情報をどこかから取りました。削除new_acc_nounit_id = '0007'group byhaving count(new_acc_no) > 1、などの変換の正確な複製で答え:stackoverflow.com/a/15762663/1476885
ZANON

7

一時テーブルを作成した後は、通常のことを実行します INSERT INTO () SELECT FROM

INSERT INTO #TempTable (id, Date, Name)
SELECT t.id, t.Date, t.Name
FROM yourTable t

5
insert into #temptable (col1, col2, col3)
select col1, col2, col3 from othertable

これは不適切なプラクティスと見なされていることに注意してください。

insert into #temptable 
select col1, col2, col3 from othertable

一時テーブルの定義が変更された場合、コードは実行時に失敗する可能性があります。



3

一時テーブルの基本操作を以下に示し、要件に応じて変更して使用します。

-一時テーブルを作成する

CREATE TABLE #MyTempEmployeeTable(tempUserID  varchar(MAX), tempUserName  varchar(MAX) )

-一時テーブルに値を挿入します

INSERT INTO #MyTempEmployeeTable(tempUserID,tempUserName) SELECT userid,username FROM users where userid =21

-TEMP TABLEのクエリ[これは同じセッション/インスタンスでのみ機能し、他のユーザーセッションインスタンスでは機能しません]

SELECT * FROM #MyTempEmployeeTable

-一時テーブルの値を削除します

DELETE FROM #MyTempEmployeeTable

-一時テーブルを削除します

DROP TABLE #MyTempEmployeeTable

これは一時テーブルであることは認識していますが、varchar(MAX)の使用はお勧めしません。
bp_

@bp_これはユーザーを説明する一般化されたサンプルスニペットであり、ユーザーはアプリケーションの要件に基づいてデータ型とそのサイズを指定できます。
BHUVANESH MOHANKUMAR

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.