하나의 테이블에서 일부 필드를 선택하고 저장 프로 시저에서 기존 테이블에 삽입하려고합니다. 여기 내가 시도하는 것이 있습니다 :
SELECT col1, col2
INTO dbo.TableTwo
FROM dbo.TableOne
WHERE col3 LIKE @search_key
생각 SELECT ... INTO ...나는 오류 얻을 이유입니다 임시 테이블입니다 dbo.TableTwo이미 존재합니다.
어떻게에서 여러 행을 삽입 할 수 있습니다 dbo.TableOne로 dbo.TableTwo?
답변
SELECT ... INTO ... INTO 절에 지정된 테이블이 존재하지 않는 경우에만 작동합니다. 그렇지 않으면 다음을 사용해야합니다.
INSERT INTO dbo.TABLETWO
SELECT col1, col2
  FROM dbo.TABLEONE
 WHERE col3 LIKE @search_key
이것은 dbo.TABLETWO에 두 개의 열만 있다고 가정합니다. 그렇지 않으면 열을 지정해야합니다.
INSERT INTO dbo.TABLETWO
  (col1, col2)
SELECT col1, col2
  FROM dbo.TABLEONE
 WHERE col3 LIKE @search_key
답변
한 테이블에서 다른 테이블로 데이터 삽입을 구현하는 두 가지 방법이 있습니다.
기존 테이블의 경우-INSERT INTO SELECT
이 방법은 테이블이 데이터베이스에서 이미 작성되어 있고 다른 테이블에서 데이터가이 테이블에 삽입 될 때 사용됩니다. insert 절과 select 절에 나열된 열이 동일한 경우 열을 나열하지 않아도됩니다. 가독성과 확장 성을 위해 항상 목록을 작성하는 것이 좋습니다.
----Create testable
CREATE TABLE TestTable (FirstName VARCHAR(100), LastName VARCHAR(100))
----INSERT INTO TestTable using SELECT
INSERT INTO TestTable (FirstName, LastName)
SELECT FirstName, LastName
FROM Person.Contact
WHERE EmailPromotion = 2
----Verify that Data in TestTable
SELECT FirstName, LastName
FROM TestTable
----Clean Up Database
DROP TABLE TestTable
기존 테이블이 아닌 경우-SELECT INTO
이 방법은 테이블이 이전에 작성되지 않았을 때 사용되며 한 테이블의 데이터를 다른 테이블의 새로 작성된 테이블에 삽입 할 때 작성해야합니다. 새 테이블은 선택한 열과 동일한 데이터 유형으로 작성됩니다.
----Create a new table and insert into table using SELECT INSERT
SELECT FirstName, LastName
INTO TestTable
FROM Person.Contact
WHERE EmailPromotion = 2
----Verify that Data in TestTable
SELECT FirstName, LastName
FROM TestTable
----Clean Up Database
DROP TABLE TestTable
답변
다음과 같이 작동합니다.
insert into Gengl_Del Select Tdate,DocNo,Book,GlCode,OpGlcode,Amt,Narration
from Gengl where BOOK='" & lblBook.Caption & "' AND DocNO=" & txtVno.Text & ""
답변
select *
into existing table database..existingtable
from database..othertables....
당신이 사용하는 경우 select * into tablename from other tablenames이미 다음 번에 추가하려면, 당신은 말한다select * into existing table tablename from other tablenames
답변
대상 테이블 이 존재 하지만 열 이름을 지정하지 않으려는 경우 :
DECLARE @COLUMN_LIST NVARCHAR(MAX);
DECLARE @SQL_INSERT NVARCHAR(MAX);
SET @COLUMN_LIST = (SELECT DISTINCT
    SUBSTRING(
        (
            SELECT ', table1.' + SYSCOL1.name  AS [text()]
            FROM sys.columns SYSCOL1
            WHERE SYSCOL1.object_id = SYSCOL2.object_id and SYSCOL1.is_identity <> 1
            ORDER BY SYSCOL1.object_id
            FOR XML PATH ('')
        ), 2, 1000)
FROM
    sys.columns SYSCOL2
WHERE
    SYSCOL2.object_id = object_id('dbo.TableOne') )
SET @SQL_INSERT =  'INSERT INTO dbo.TableTwo SELECT ' + @COLUMN_LIST + ' FROM dbo.TableOne table1 WHERE col3 LIKE ' + @search_key
EXEC sp_executesql @SQL_INSERT
답변
