임시 테이블에 데이터 삽입


195

임시 테이블을 작성하고 이와 같이 데이터 유형을 선언 한 후;

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

그런 다음 데이터베이스 내의 실제 테이블에 이미 보유 된 관련 데이터를 어떻게 삽입합니까?

답변:


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

5
테이블을 다 사용한 후에는 테이블을 삭제해야합니다. 그렇지 않으면 "데이터베이스에 '#TempTable'이라는 개체가 이미 있습니다." 오류 (쿼리를 다시 실행해야합니다 ...)
Rhdr

초기 질문은 이미 생성 된 테이블에 관한 것입니다. 팁이 유용하기 때문에 저자의 질문과 관련이 없습니다
alexsuslin

99

모든 열의 모든 데이터를 삽입하려면 다음을 사용하십시오.

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


15

동일한 문제를 해결하기 위해 두 가지 접근 방식을 제공했습니다.

해결 방법 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_no, unit_id = '0007', group by, having 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

임시 테이블의 정의가 변경되면 런타임시 코드가 실패 할 수 있습니다.


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

3

임시 테이블의 기본 작동은 다음과 같으며 요구 사항에 따라 수정하고 사용하십시오.

-TEMP 테이블 생성

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

-TEMP 테이블에 값 삽입

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

-TEMP TABLE QUERY [다른 사용자 세션 인스턴스가 아닌 동일한 세션 / 인스턴스에서만 작동합니다]

SELECT * FROM #MyTempEmployeeTable

-TEMP 테이블에서 값 삭제

DELETE FROM #MyTempEmployeeTable

-TEMP TABLE 삭제

DROP TABLE #MyTempEmployeeTable

나는 이것이 임시 테이블이라는 것을 알고 있지만 여전히 누군가가 varchar (MAX)를 사용하지 않는 것이 좋습니다.
bp_

@bp_ 이것은 일반화 된 샘플 스 니펫으로, 사용자와 사용자는 응용 프로그램 요구 사항에 따라 데이터 유형과 크기를 지정할 수 있습니다.
바네스 모한 쿠마르

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.