Memasukkan data ke tabel sementara

195

Setelah membuat tabel sementara dan mendeklarasikan tipe data seperti itu;

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

Bagaimana saya kemudian memasukkan data yang relevan yang sudah tersimpan di tabel fisik dalam database?

William
sumber

Jawaban:

244
INSERT INTO #TempTable (ID, Date, Name) 
SELECT id, date, name 
FROM physical_table
alexsuslin
sumber
5
Ingatlah untuk menjatuhkan tabel setelah Anda selesai melakukannya, jika tidak, Anda mungkin akan melihat "Sudah ada objek bernama '#TempTable' dalam database." kesalahan (jika Anda menjalankan kueri lagi ...)
Rhdr
Pertanyaan awal adalah tentang tabel, yang sudah dibuat. Karena tip berguna, tidak terhubung ke pertanyaan penulis
alexsuslin
98

Untuk memasukkan semua data dari semua kolom, cukup gunakan ini:

SELECT * INTO #TempTable
FROM OriginalTable

Jangan lupa ke DROPtabel sementara setelah selesai dan sebelum Anda mencoba membuatnya lagi:

DROP TABLE #TempTable
Sheridan
sumber
9
Saya suka ini karena saya tidak harus CREATEyang#TempTable
MAbraham1
73
SELECT  ID , Date , Name into #temp from [TableName]
Abdul Saboor
sumber
41

Cara saya Insertdalam SQL Server. Juga saya biasanya memeriksa apakah ada tabel sementara.

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

SELECT b.Val as 'bVals'
  INTO #MyTable
FROM OtherTable as b
pepatah
sumber
21
SELECT * 
INTO #TempTable
FROM table
Ravi Teja Koneru
sumber
Jawaban paling sederhana di sini. Anda juga dapat menggunakan dbo.MyTable dan itu akan menjadi tabel permanen. Peasy mudah
Fandango68
15

Saya telah menyediakan dua pendekatan untuk mengatasi masalah yang sama,

Solusi 1: Pendekatan ini mencakup 2 langkah, pertama buat tabel sementara dengan tipe data yang ditentukan, selanjutnya masukkan nilai dari tabel data yang ada.

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

SELECT * FROM #TempStudent

Solusi 2: Pendekatan ini sederhana, di mana Anda bisa langsung memasukkan nilai ke tabel sementara, di mana sistem secara otomatis mengurus pembuatan tabel temp dengan tipe data yang sama dengan tabel asli.

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

SELECT * FROM #TempStudent
Ipsita Sethi
sumber
Meskipun saya menyadari bahwa ini adalah tabel temp, saya masih tidak akan merekomendasikan seseorang menggunakan varchar (MAX).
bp_
8

Kueri yang tepat:

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
Ahsan Ahmad
sumber
10
Jawaban ini tidak ada hubungannya dengan pertanyaan. Anda mengambil informasi ini dari tempat lain. Menghapus new_acc_no, unit_id = '0007', group by, having count(new_acc_no) > 1, dll transformasi jawaban di duplikat yang tepat dari: stackoverflow.com/a/15762663/1476885
Zanon
7

Setelah Anda membuat tabel temp, Anda hanya akan melakukan yang normal INSERT INTO () SELECT FROM

INSERT INTO #TempTable (id, Date, Name)
SELECT t.id, t.Date, t.Name
FROM yourTable t
Taryn
sumber
5
insert into #temptable (col1, col2, col3)
select col1, col2, col3 from othertable

Perhatikan bahwa ini dianggap praktik yang buruk:

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

Jika definisi tabel temp berubah, kode bisa gagal saat runtime.

Robbie Dee
sumber
4
INSERT INTO #TempTable(ID, Date, Name)
SELECT OtherID, OtherDate, OtherName FROM PhysicalTable
Yuriy Galanter
sumber
3

Pengoperasian dasar tabel Sementara diberikan di bawah ini, modifikasi dan gunakan sesuai kebutuhan Anda,

- BUAT TEMPEL TEMP

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

- Masukkan nilai ke dalam tabel TEMP

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

- QUERY A TEMP TABLE [Ini hanya akan bekerja di sesi / Instance yang sama, tidak pada instance sesi pengguna lain]

SELECT * FROM #MyTempEmployeeTable

- HAPUS NILAI DI TEMP TABLE

DELETE FROM #MyTempEmployeeTable

- DROP A TEMP TABEL

DROP TABLE #MyTempEmployeeTable
MOHANKUMAR BHUVANESH
sumber
Meskipun saya menyadari bahwa ini adalah tabel temp, saya masih tidak akan merekomendasikan seseorang menggunakan varchar (MAX).
bp_
@ bp_ Ini adalah cuplikan sampel umum yang menjelaskan pengguna dan Pengguna dapat menentukan tipe data dan ukurannya berdasarkan persyaratan aplikasi mereka.
BHUVANESH MOHANKUMAR
2
insert #temptable
select idfield, datefield, namefield from yourrealtable
podiluska
sumber