2012-09-07 5 views
3

테이블 a에 여러 항목을 제출하는 쿼리가 있습니다. 예를 들어다중 값 삽입 mysql에 가입

:

insert into a values(id,name) (5,'john'),(6,'smith'); 

나는 또한이 ID를 가진 다른 테이블에서 몇 번째 값을 선택해야하지만. 예를 들어

: 상기와

insert into a values(id,name,money) (5,'john',(select money from b where id=5)),(6,'smith',(select money from b where id=6)); 

문제는 약간의 반복이다 또한 서브 선택을 사용한다.

가이 사용 JOIN, 다시 할 수 있다면 (또한 그 지정된 ID의 표 B에 관계이 있음을 재확인한다 그것은 NULL을 삽입하지 않도록,) 내가 궁금합니다.

아이디어가 있으십니까?

답변

3

각각 INSERT에 대해 하나의 SELECT 만 허용되므로 여러 개의 값을 한 번에 삽입하지 말고 여러 행을 선택하려면이 값을 다시 써야합니다. 두 개의 값 집합을 가진 임시 테이블을 만들고 INSERTJOIN 인 테이블을 만들 수 있습니까?

CREATE TEMPORARY TABLE _tmp_a (id INT PRIMARY KEY, name VARCHAR(255)); 
INSERT INTO _tmp_a (5, 'john'), (6, 'smith') 
INSERT INTO a VALUES (id, name, money) SELECT _tmp_a.id, _tmp_a.name, b.money FROM _tmp_a LEFT JOIN b ON b.id=_tmp_a.id 
+0

그럼 왜 안되죠! 이 위의 위대한, 나는 그것을 밖으로 시도 할 것입니다. 또한'left join'을'join'으로 대체 할 수 있는지 궁금해합니다. 그래서'null'과 같은 돈을 가진 행을 삽입하지 않을 것입니다. 나는 그것을 체크 아웃 할 것이다. – Anonymous

+0

"오른쪽"에 해당 값이없는 항목을 건너 뛰려면'RIGHT JOIN'을 사용할 수있다. – tadman

+0

Naah, 'JOIN'이 맞았습니다. 감사 :) – Anonymous