SQL Server를 기존 테이블로 선택
하나의 테이블에서 몇 개의 필드를 선택하여 저장 프로시저에서 기존 테이블에 삽입하려고 합니다.제가 하려는 일은 다음과 같습니다.
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 절과 select 절에 나열된 열이 동일한 경우 나열할 필요가 없습니다.가독성과 scalability를 위해 항상 목록을 작성하는 것이 좋습니다.
----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 & ""
대상 테이블이 존재하지만 열 이름을 지정하지 않을 경우:
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
select to를 사용하여 새 테이블의 ID 열을 작성하는 경우 다음과 같이 수행할 수 있습니다.
SELECT
ID = IDENTITY(INT, 1, 1),
name
INTO table2
FROM table1
select *
into existing table database..existingtable
from database..othertables....
를 사용한 적이 있는 경우select * into tablename from other tablenames
이미, 다음에, 덧붙이자면, 당신은 말한다select * into existing table tablename from other tablenames
Table_B에서 Table_A에 삽입하려면 열이 Table_A에 없는 경우에만 다음을 사용하십시오.
BEGIN TRANSACTION
INSERT INTO dbo.Table_A (Column_1)
SELECT DISTINCT Some_Column AS Column_1
FROM dbo.Table_B
WHERE Some_Column
NOT IN (SELECT DISTINCT GroupId
FROM dbo.Table_A)
COMMIT
언급URL : https://stackoverflow.com/questions/4101739/sql-server-select-into-existing-table
'programing' 카테고리의 다른 글
row_number()를 사용한SQL 업데이트 (0) | 2023.04.07 |
---|---|
데이터베이스를 연결할 때 액세스가 거부되었습니다. (0) | 2023.04.07 |
열 값이 고유하지 않은 모든 행을 선택하는 방법 (0) | 2023.04.07 |
SQL Server: SQL 쿼리를 사용하여 테이블 기본 키 가져오기 (0) | 2023.04.07 |
[ SQL Server Table ]컬럼의 문자열을 치환하는 방법 (0) | 2023.04.07 |