[sql] 기존 테이블에 SQL Server SELECT

하나의 테이블에서 일부 필드를 선택하고 저장 프로 시저에서 기존 테이블에 삽입하려고합니다. 여기 내가 시도하는 것이 있습니다 :

SELECT col1, col2
INTO dbo.TableTwo
FROM dbo.TableOne
WHERE col3 LIKE @search_key

생각 SELECT ... INTO ...나는 오류 얻을 이유입니다 임시 테이블입니다 dbo.TableTwo이미 존재합니다.

어떻게에서 여러 행을 삽입 할 수 있습니다 dbo.TableOnedbo.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

참조 1 2


답변

다음과 같이 작동합니다.

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


답변