복붙노트

[SQL] 기존 테이블에 SQL 서버 SELECT

SQL

기존 테이블에 SQL 서버 SELECT

나는 하나 개의 테이블에서 일부 필드를 선택하고 저장 프로 시저에서 기존 테이블에 삽입하려합니다. 여기에 내가 노력하고 무엇 :

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

나는 SELECT ... INTO ... 난 dbo.TableTwo이 이미 존재한다는 오류가 발생하는 이유를 임시 테이블에 대한 생각합니다.

어떻게 dbo.TableTwo에 dbo.TableOne에서 여러 행을 삽입 할 수 있습니다?

해결법

  1. ==============================

    1.SELECT ... INTO는 ...에만 INTO 절에 지정된 테이블이 존재하지 않습니다 작동하는 경우 - 그렇지 않으면, 당신은 사용해야합니다 :

    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
    
  2. ==============================

    2.한 테이블에서 다른 테이블로 데이터를 삽입 구현하는 두 가지 방법이 있습니다.

    한 테이블에서 다른 테이블로 데이터를 삽입 구현하는 두 가지 방법이 있습니다.

    테이블이 이미 데이터베이스 이전에 생성되는 경우이 방법이 사용되고 다른 데이터 테이블이 테이블에 삽입한다. 삽입 절과 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
    

    테이블이 이전에 생성되지 않고, 요구는 하나 개의 테이블에서 데이터를 다른 테이블에서 새롭게 생성 된 테이블에 삽입 될 때 생성 될 때,이 방법은 사용된다. 새로운 표가 선택된 열과 동일한 데이터 형식으로 생성된다.

    ----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 참조

  3. ==============================

    3.아래에 주어진 그것은 작동합니다 :

    아래에 주어진 그것은 작동합니다 :

    insert into Gengl_Del Select Tdate,DocNo,Book,GlCode,OpGlcode,Amt,Narration 
    from Gengl where BOOK='" & lblBook.Caption & "' AND DocNO=" & txtVno.Text & ""
    
  4. ==============================

    4.

    select *
    into existing table database..existingtable
    from database..othertables....
    

    당신이 추가하려면 이미 다른 테이블 이름, 다음에서 TABLENAME로 선택 *를 사용한 경우, 다른 테이블 이름에서 기존 테이블 TABLENAME로 선택 * 말

  5. ==============================

    5.대상 테이블이 존재합니까하지만 경우에 당신은 열 이름을 지정하지 않으 :

    대상 테이블이 존재합니까하지만 경우에 당신은 열 이름을 지정하지 않으 :

    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
    
  6. from https://stackoverflow.com/questions/4101739/sql-server-select-into-existing-table by cc-by-sa and MIT license