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?

Jawaban:


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

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

9
Saya suka ini karena saya tidak harus CREATEyang#TempTable
MAbraham1


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

21
SELECT * 
INTO #TempTable
FROM table

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

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

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

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.


4
INSERT INTO #TempTable(ID, Date, Name)
SELECT OtherID, OtherDate, OtherName FROM PhysicalTable

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

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
Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.