2014-10-03 3 views
2

선정 된 데이터를 여러 삽입 수행 기본적으로 syntex는 맞지만 여러 개의 INSERTS에 대해 확실하지 않습니다. 정상적인 INSERT 문을 사용하여이 작업을 수행 할 수 있음을 알고 있지만 VALUES 절에있는 SELECT에 대해 확실하지 않습니다.나는이 sudo는 쿼리를 수행 할

저는 실제 데이터베이스로 작업하고 있으며 모든 것을 백업했지만 직접적인 실험을 최소한으로하고 싶습니다.

답변

1

당신은 UNION을 사용할 수 있습니다

INSERT INTO table1 (foreign_key, meta_key, meta_value) 
SELECT id, 'first meta key', 'first meta value' FROM table2 WHERE condition = 'met' 
UNION 
SELECT id, 'second meta key', 'second meta value' FROM table2 WHERE condition = 'met' 
UNION 
SELECT id, 'third meta key', 'third meta value' FROM table2 WHERE condition = 'met' 
+0

여기 오해의 원인이 있습니다. 나는 질문을 업데이트 할 것입니다 - 이것이 여전히 효과가 있는지 알려주십시오. –

+0

아니요, 쿼리가 작동하지 않습니다 (SQLServer 2005를 사용하고 있습니다). – Hrabal

1

당신은 값 사이에 쉼표를 추가해야합니다.

INSERT INTO table1 (foreign_key, meta_key, meta_value) 
VALUES (
    (SELECT id FROM table2 WHERE condition = 'met'), 'first meta key', 'first meta value' 
), 
(
    (SELECT id FROM table2 WHERE condition = 'met'), 'second meta key', 'second meta value' 
), 
(
    (SELECT id FROM table2 WHERE condition = 'met'), 'third meta key', 'third meta value' 
) 

그리고 모든 하위 쿼리는 1 행만 반환해야합니다.

시도해보십시오. Sql Fiddle Demo 정상적인 방법으로

또는 사용 노조는 :

INSERT INTO table1 (foreign_key, meta_key, meta_value) 
SELECT id, 'first meta key' , 'first meta value' FROM table2 WHERE condition = 'met') 
UNION ALL 
SELECT id, 'second meta key', 'second meta value' FROM table2 WHERE condition = 'met') 
UNION ALL 
SELECT id, 'third meta key' , 'third meta value' FROM table2 WHERE condition = 'met') 
관련 문제