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