2012-09-13 4 views
1

암이 다른 한 테이블의 행을 삽입 긴 쿼리의 반복 하위 쿼리에 대한 대안, 내가 여기에 다음과 같은 하위 쿼리를 두 번 반복 위의 질의에mysql을 -

INSERT INTO table1 
     (id,name,fieldname,address) 
SELECT (SELECT id FROM usertable WHERE name = 'namevalue'), 
     name, 
     (SELECT fieldname FROM fielddata WHERE id IN 
     (SELECT id FROM usertable WHERE name = 'namevalue')), 
     address 
FROM sourcetable 
WHERE cond = 'value' 

같은 쿼리가 이것에 대한이며, 하위 쿼리를 한 번만 사용하고 값을 유지하고 다른 곳에서 사용하는 방법이 있습니다.

SELECT id FROM usertable WHERE name = 'namevalue' 

더 자세한 정보가 필요하면 알려주십시오.

답변

0

이 시도 :

INSERT INTO table1 
    (id,name,fieldname,address) 
SELECT sub.id, 
    sub.name, 
    (SELECT fieldname FROM fielddata WHERE id IN sub.id), 
    sub.address 
FROM 
(
    SELECT (SELECT id FROM usertable WHERE name = 'namevalue') id, 
     name, 
     address 
    FROM sourcetable 
    WHERE cond = 'value' 
) sub 
0

학습에 대한 SQL joins :

INSERT INTO table1 (id, name, fieldname, address) 
SELECT usertable.id, 
     sourcetable.name, 
     fielddata.fieldname, 
     sourcetable.address 
FROM sourcetable 
    JOIN usertable ON sourcetable.cond = 'value' 
       AND usertable.name = 'namevalue' 
    LEFT JOIN fielddata ON fielddata.id = usertable.id